home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 2 / AACD 2.iso / AACD / Magazine / GraphicsCards / StormMesa / src-glu / nurbssrf.s < prev    next >
Text File  |  1998-12-15  |  77KB  |  4,284 lines

  1.  
  2. ; Storm C Compiler
  3. ; Work2:Mesa3/Mesa-3.0/src-glu/nurbssrf.c
  4.     mc68030
  5.     mc68881
  6.     XREF    _free_unified_knots
  7.     XREF    _select_knot_working_range
  8.     XREF    _fine_culling_test_3D
  9.     XREF    _glu_do_sampling_param_3D
  10.     XREF    _glu_do_sampling_uv
  11.     XREF    _glu_do_sampling_3D
  12.     XREF    _calc_new_ctrl_pts
  13.     XREF    _calc_alphas
  14.     XREF    _explode_knot
  15.     XREF    _test_knot
  16.     XREF    _call_user_error
  17.     XREF    _glEvalMesh2
  18.     XREF    _glEvalPoint2
  19.     XREF    _glMapGrid2f
  20.     XREF    _glEvalCoord2f
  21.     XREF    _glMap2f
  22.     XREF    _glEnd
  23.     XREF    _glBegin
  24.     XREF    _glGetIntegerv
  25.     XREF    _glEnable
  26.     XREF    _glFrontFace
  27.     XREF    _memcpy
  28.     XREF    _abort
  29.     XREF    _malloc
  30.     XREF    _free
  31.     XREF    _abs
  32.     XREF    _fabs__r
  33.  
  34.     SECTION "_get_surface_dim:0",CODE
  35.  
  36.  
  37. ;static int
  38. _get_surface_dim
  39.     move.l    4(a7),d0
  40. L272
  41. ;    switch(type)
  42.     sub.l    #$DB0,d0
  43.     cmp.l    #$8,d0
  44.     bhi.b    L282
  45.     move.l    L283(pc,d0.l*4),a0
  46.     jmp    (a0)
  47. L283
  48.     dc.l    L276
  49.     dc.l    L275
  50.     dc.l    L277
  51.     dc.l    L278
  52.     dc.l    L279
  53.     dc.l    L280
  54.     dc.l    L281
  55.     dc.l    L273
  56.     dc.l    L274
  57. ;        
  58. L273
  59.     moveq    #3,d0
  60.     rts
  61. L274
  62.     moveq    #4,d0
  63.     rts
  64. L275
  65.     moveq    #1,d0
  66.     rts
  67. L276
  68.     moveq    #4,d0
  69.     rts
  70. L277
  71.     moveq    #3,d0
  72.     rts
  73. L278
  74.     moveq    #1,d0
  75.     rts
  76. L279
  77.     moveq    #2,d0
  78.     rts
  79. L280
  80.     moveq    #3,d0
  81.     rts
  82. L281
  83.     moveq    #4,d0
  84.     rts
  85. L282
  86. ;                default:  abort();
  87.     jsr    _abort
  88.     moveq    #0,d0
  89.     rts
  90.  
  91.     SECTION "_test_nurbs_surface:0",CODE
  92.  
  93.     rts
  94.  
  95. ;static GLenum
  96. _test_nurbs_surface
  97. L309    EQU    -$8
  98.     link    a5,#L309
  99.     movem.l    d2/a2/a3,-(a7)
  100.     move.l    $C(a5),a2
  101.     move.l    $8(a5),a3
  102. L284
  103. ;    if(attrib->sorder < 0 || attrib->torder < 0)
  104.     tst.l    $1C(a2)
  105.     bmi.b    L286
  106. L285
  107.     tst.l    $20(a2)
  108.     bpl.b    L287
  109. L286
  110. ;        call_user_error(nobj,GLU_INVALID_VALUE);
  111.     move.l    #$18A25,-(a7)
  112.     move.l    a3,-(a7)
  113.     jsr    _call_user_error
  114.     addq.w    #$8,a7
  115.     move.l    #$18707,d0
  116.     movem.l    (a7)+,d2/a2/a3
  117.     unlk    a5
  118.     rts
  119. L287
  120. ;    glGetIntegerv(GL_MAX_EVAL_ORDER,&tmp_int);
  121.     pea    -$8(a5)
  122.     pea    $D30.w
  123.     jsr    _glGetIntegerv
  124.     addq.w    #$8,a7
  125. ;    if(attrib->sorder > tmp_int || attrib->sorder < 2)
  126.     move.l    $1C(a2),d0
  127.     cmp.l    -$8(a5),d0
  128.     bgt.b    L289
  129. L288
  130.     move.l    $1C(a2),d0
  131.     cmp.l    #2,d0
  132.     bge.b    L290
  133. L289
  134. ;        call_user_error(nobj,GLU_NURBS_ERROR1);
  135.     move.l    #$1879B,-(a7)
  136.     move.l    a3,-(a7)
  137.     jsr    _call_user_error
  138.     addq.w    #$8,a7
  139.     move.l    #$18707,d0
  140.     movem.l    (a7)+,d2/a2/a3
  141.     unlk    a5
  142.     rts
  143. L290
  144. ;    if(attrib->torder > tmp_int || attrib->torder < 2)
  145.     move.l    $20(a2),d0
  146.     cmp.l    -$8(a5),d0
  147.     bgt.b    L292
  148. L291
  149.     move.l    $20(a2),d0
  150.     cmp.l    #2,d0
  151.     bge.b    L293
  152. L292
  153. ;        call_user_error(nobj,GLU_NURBS_ERROR1);
  154.     move.l    #$1879B,-(a7)
  155.     move.l    a3,-(a7)
  156.     jsr    _call_user_error
  157.     addq.w    #$8,a7
  158.     move.l    #$18707,d0
  159.     movem.l    (a7)+,d2/a2/a3
  160.     unlk    a5
  161.     rts
  162. L293
  163. ;    if(attrib->sknot_count < attrib->sorder +2)
  164.     move.l    $1C(a2),d0
  165.     addq.l    #2,d0
  166.     move.l    (a2),d1
  167.     cmp.l    d0,d1
  168.     bge.b    L295
  169. L294
  170. ;        call_user_error(nobj,GLU_NURBS_ERROR2);
  171.     move.l    #$1879C,-(a7)
  172.     move.l    a3,-(a7)
  173.     jsr    _call_user_error
  174.     addq.w    #$8,a7
  175.     move.l    #$18707,d0
  176.     movem.l    (a7)+,d2/a2/a3
  177.     unlk    a5
  178.     rts
  179. L295
  180. ;    if(attrib->tknot_count < attrib->torder +2)
  181.     move.l    $20(a2),d0
  182.     addq.l    #2,d0
  183.     move.l    $8(a2),d1
  184.     cmp.l    d0,d1
  185.     bge.b    L297
  186. L296
  187. ;        call_user_error(nobj,GLU_NURBS_ERROR2);
  188.     move.l    #$1879C,-(a7)
  189.     move.l    a3,-(a7)
  190.     jsr    _call_user_error
  191.     addq.w    #$8,a7
  192.     move.l    #$18707,d0
  193.     movem.l    (a7)+,d2/a2/a3
  194.     unlk    a5
  195.     rts
  196. L297
  197. ;    if(attrib->s_stride < 0 || attrib->t_stride < 0)
  198.     tst.l    $10(a2)
  199.     bmi.b    L299
  200. L298
  201.     tst.l    $14(a2)
  202.     bpl.b    L300
  203. L299
  204. ;        call_user_error(nobj,GLU_NURBS_ERROR34);
  205.     move.l    #$187BC,-(a7)
  206.     move.l    a3,-(a7)
  207.     jsr    _call_user_error
  208.     addq.w    #$8,a7
  209.     move.l    #$18707,d0
  210.     movem.l    (a7)+,d2/a2/a3
  211.     unlk    a5
  212.     rts
  213. L300
  214. ;    if(attrib->sknot==NULL || attrib->tknot==NULL || attrib->ctrlarray
  215.     move.l    4(a2),a0
  216.     cmp.w    #0,a0
  217.     beq.b    L303
  218. L301
  219.     move.l    $C(a2),a0
  220.     cmp.w    #0,a0
  221.     beq.b    L303
  222. L302
  223.     move.l    $18(a2),a0
  224.     cmp.w    #0,a0
  225.     bne.b    L304
  226. L303
  227. ;        call_user_error(nobj,GLU_NURBS_ERROR36);
  228.     move.l    #$187BE,-(a7)
  229.     move.l    a3,-(a7)
  230.     jsr    _call_user_error
  231.     addq.w    #$8,a7
  232.     move.l    #$18707,d0
  233.     movem.l    (a7)+,d2/a2/a3
  234.     unlk    a5
  235.     rts
  236. L304
  237. ;    if((err=test_knot(attrib->tknot_count,attrib->tknot,attrib->torder)
  238.     move.l    $20(a2),-(a7)
  239.     move.l    $C(a2),-(a7)
  240.     move.l    $8(a2),-(a7)
  241.     jsr    _test_knot
  242.     add.w    #$C,a7
  243.     tst.l    d0
  244.     beq.b    L306
  245. L305
  246. ;        call_user_error(nobj,err);
  247.     move.l    d0,-(a7)
  248.     move.l    a3,-(a7)
  249.     jsr    _call_user_error
  250.     addq.w    #$8,a7
  251.     move.l    #$18707,d0
  252.     movem.l    (a7)+,d2/a2/a3
  253.     unlk    a5
  254.     rts
  255. L306
  256. ;    if((err=test_knot(attrib->sknot_count,attrib->sknot,attrib->sorder)
  257.     move.l    $1C(a2),-(a7)
  258.     move.l    4(a2),-(a7)
  259.     move.l    (a2),-(a7)
  260.     jsr    _test_knot
  261.     add.w    #$C,a7
  262.     tst.l    d0
  263.     beq.b    L308
  264. L307
  265. ;        call_user_error(nobj,err);
  266.     move.l    d0,-(a7)
  267.     move.l    a3,-(a7)
  268.     jsr    _call_user_error
  269.     addq.w    #$8,a7
  270.     move.l    #$18707,d0
  271.     movem.l    (a7)+,d2/a2/a3
  272.     unlk    a5
  273.     rts
  274. L308
  275.     moveq    #0,d0
  276.     movem.l    (a7)+,d2/a2/a3
  277.     unlk    a5
  278.     rts
  279.  
  280.     SECTION "_test_nurbs_surfaces:0",CODE
  281.  
  282.  
  283. ;static GLenum
  284. _test_nurbs_surfaces
  285.     move.l    a2,-(a7)
  286.     move.l    $8(a7),a2
  287. L310
  288. ;    if(test_nurbs_surface(nobj,&(nobj->surface.geom))!=GLU_NO_ERROR)
  289.     pea    $B8(a2)
  290.     move.l    a2,-(a7)
  291.     jsr    _test_nurbs_surface
  292.     addq.w    #$8,a7
  293.     tst.l    d0
  294.     beq.b    L312
  295. L311
  296.     move.l    #$18707,d0
  297.     move.l    (a7)+,a2
  298.     rts
  299. L312
  300. ;    if(nobj->surface.color.type!=GLU_INVALID_ENUM)
  301.     move.l    $10C(a2),d0
  302.     cmp.l    #$18A24,d0
  303.     beq.b    L315
  304. L313
  305. ;        if(test_nurbs_surface(nobj,&(nobj->surface.color))!=GLU_NO_ERROR)
  306.     pea    $E4(a2)
  307.     move.l    a2,-(a7)
  308.     jsr    _test_nurbs_surface
  309.     addq.w    #$8,a7
  310.     tst.l    d0
  311.     beq.b    L315
  312. L314
  313.     move.l    #$18707,d0
  314.     move.l    (a7)+,a2
  315.     rts
  316. L315
  317. ;    if(nobj->surface.normal.type!=GLU_INVALID_ENUM)
  318.     move.l    $164(a2),d0
  319.     cmp.l    #$18A24,d0
  320.     beq.b    L318
  321. L316
  322. ;        if(test_nurbs_surface(nobj,&(nobj->surface.normal))!=GLU_NO_ERRO
  323.     pea    $13C(a2)
  324.     move.l    a2,-(a7)
  325.     jsr    _test_nurbs_surface
  326.     addq.w    #$8,a7
  327.     tst.l    d0
  328.     beq.b    L318
  329. L317
  330.     move.l    #$18707,d0
  331.     move.l    (a7)+,a2
  332.     rts
  333. L318
  334. ;    if(nobj->surface.texture.type!=GLU_INVALID_ENUM)
  335.     move.l    $138(a2),d0
  336.     cmp.l    #$18A24,d0
  337.     beq.b    L321
  338. L319
  339. ;        if(test_nurbs_surface(nobj,&(nobj->surface.texture))!=GLU_NO_ERR
  340.     pea    $110(a2)
  341.     move.l    a2,-(a7)
  342.     jsr    _test_nurbs_surface
  343.     addq.w    #$8,a7
  344.     tst.l    d0
  345.     beq.b    L321
  346. L320
  347.     move.l    #$18707,d0
  348.     move.l    (a7)+,a2
  349.     rts
  350. L321
  351.     moveq    #0,d0
  352.     move.l    (a7)+,a2
  353.     rts
  354.  
  355.     SECTION "_convert_surf:0",CODE
  356.  
  357.  
  358. ;static GLenum
  359. _convert_surf
  360. L390    EQU    -$A8
  361.     link    a5,#L390
  362.     movem.l    d2-d5/a2-a4,-(a7)
  363.     move.l    $14(a5),a4
  364. L322
  365. ;    if((s_knot->unified_knot !=NULL && s_knot->unified_nknots==0) || 
  366.     move.l    $8(a5),a1
  367.     move.l    $8(a1),a0
  368.     cmp.w    #0,a0
  369.     beq.b    L324
  370. L323
  371.     move.l    $8(a5),a0
  372.     tst.l    $C(a0)
  373.     beq.b    L326
  374. L324
  375.     move.l    $C(a5),a1
  376.     move.l    $8(a1),a0
  377.     cmp.w    #0,a0
  378.     beq.b    L331
  379. L325
  380.     move.l    $C(a5),a0
  381.     tst.l    $C(a0)
  382.     bne.b    L331
  383. L326
  384. ;        if(s_knot->unified_knot)
  385.     move.l    $8(a5),a1
  386.     tst.l    $8(a1)
  387.     beq.b    L328
  388. L327
  389. ;            free(s_knot->unified_knot);
  390.     move.l    $8(a5),a1
  391.     move.l    $8(a1),-(a7)
  392.     jsr    _free
  393.     addq.w    #4,a7
  394. ;            s_knot->unified_knot=NULL;
  395.     move.l    $8(a5),a1
  396.     clr.l    $8(a1)
  397. L328
  398. ;        if(t_knot->unified_knot)
  399.     move.l    $C(a5),a1
  400.     tst.l    $8(a1)
  401.     beq.b    L330
  402. L329
  403. ;            free(t_knot->unified_knot);
  404.     move.l    $C(a5),a1
  405.     move.l    $8(a1),-(a7)
  406.     jsr    _free
  407.     addq.w    #4,a7
  408. ;            t_knot->unified_knot=NULL;
  409.     move.l    $C(a5),a1
  410.     clr.l    $8(a1)
  411. L330
  412. ;        *s_n_ctrl=0;
  413.     move.l    $18(a5),a0
  414.     clr.l    (a0)
  415. ;        *t_n_ctrl=0;
  416.     move.l    $1C(a5),a0
  417.     clr.l    (a0)
  418.     moveq    #0,d0
  419.     movem.l    (a7)+,d2-d5/a2-a4
  420.     unlk    a5
  421.     rts
  422. L331
  423. ;    t_cnt=attrib->tknot_count-attrib->torder;
  424.     move.l    $10(a5),a0
  425.     move.l    $8(a0),d5
  426.     move.l    $10(a5),a0
  427.     sub.l    $20(a0),d5
  428. ;    s_cnt=attrib->sknot_count-attrib->sorder;
  429. ;    if((tmp_ctrl=(GLfloat **)malloc(sizeof(GLfloat *)*t_cnt))==NULL)
  430.     move.l    d5,d0
  431.     moveq    #2,d1
  432.     asl.l    d1,d0
  433.     move.l    d0,-(a7)
  434.     jsr    _malloc
  435.     addq.w    #4,a7
  436.     move.l    d0,a2
  437.     cmp.w    #0,a2
  438.     bne.b    L333
  439. L332
  440.     move.l    #$18A26,d0
  441.     movem.l    (a7)+,d2-d5/a2-a4
  442.     unlk    a5
  443.     rts
  444. L333
  445. ;    if((err=explode_knot(s_knot))!=GLU_NO_ERROR)
  446.     move.l    $8(a5),-(a7)
  447.     jsr    _explode_knot
  448.     addq.w    #4,a7
  449.     move.l    d0,d3
  450.     beq.b    L337
  451. L334
  452. ;        free(tmp_ctrl);
  453.     move.l    a2,-(a7)
  454.     jsr    _free
  455.     addq.w    #4,a7
  456. ;        if(s_knot->unified_knot)
  457.     move.l    $8(a5),a1
  458.     tst.l    $8(a1)
  459.     beq.b    L336
  460. L335
  461. ;            free(s_knot->unified_knot);
  462.     move.l    $8(a5),a1
  463.     move.l    $8(a1),-(a7)
  464.     jsr    _free
  465.     addq.w    #4,a7
  466. ;            s_knot->unified_knot=NULL;
  467.     move.l    $8(a5),a1
  468.     clr.l    $8(a1)
  469. L336
  470.     move.l    d3,d0
  471.     movem.l    (a7)+,d2-d5/a2-a4
  472.     unlk    a5
  473.     rts
  474. L337
  475. ;    if(s_knot->unified_knot)
  476.     move.l    $8(a5),a1
  477.     tst.l    $8(a1)
  478.     beq.b    L339
  479. L338
  480. ;        free(s_knot->unified_knot);
  481.     move.l    $8(a5),a1
  482.     move.l    $8(a1),-(a7)
  483.     jsr    _free
  484.     addq.w    #4,a7
  485. ;        s_knot->unified_knot=NULL;
  486.     move.l    $8(a5),a1
  487.     clr.l    $8(a1)
  488. L339
  489. ;    if((err=calc_alphas(s_knot))!=GLU_NO_ERROR)
  490.     move.l    $8(a5),-(a7)
  491.     jsr    _calc_alphas
  492.     addq.w    #4,a7
  493.     move.l    d0,d3
  494.     beq.b    L341
  495. L340
  496. ;        free(tmp_ctrl);
  497.     move.l    a2,-(a7)
  498.     jsr    _free
  499.     addq.w    #4,a7
  500. ;        free(s_knot->new_knot);
  501.     move.l    $8(a5),a1
  502.     move.l    $22(a1),-(a7)
  503.     jsr    _free
  504.     addq.w    #4,a7
  505.     move.l    d3,d0
  506.     movem.l    (a7)+,d2-d5/a2-a4
  507.     unlk    a5
  508.     rts
  509. L341
  510. ;    free(s_knot->new_knot);
  511.     move.l    $8(a5),a1
  512.     move.l    $22(a1),-(a7)
  513.     jsr    _free
  514.     addq.w    #4,a7
  515. ;    ctrl_offset=attrib->ctrlarray;
  516.     move.l    $10(a5),a0
  517.     move.l    $18(a0),a3
  518. ;    dim=attrib->dim;
  519.     move.l    $10(a5),a0
  520.     move.l    $24(a0),d4
  521. ;    for(i=0;
  522.     moveq    #0,d2
  523.     bra.b    L348
  524. L342
  525. ;        if((err=calc_new_ctrl_pts(ctrl_offset,attrib->s_stride,s_knot,
  526.     pea    -$C(a5)
  527.     pea    0(a2,d2.l*4)
  528.     move.l    d4,-(a7)
  529.     move.l    $8(a5),-(a7)
  530.     move.l    $10(a5),a0
  531.     move.l    $10(a0),-(a7)
  532.     move.l    a3,-(a7)
  533.     jsr    _calc_new_ctrl_pts
  534.     add.w    #$18,a7
  535.     move.l    d0,d3
  536.     beq.b    L347
  537. L343
  538. ;            for(--i;
  539.     subq.l    #1,d2
  540.     bra.b    L345
  541. L344
  542. ;                free(tmp_ctrl[i]);
  543.     move.l    0(a2,d2.l*4),-(a7)
  544.     jsr    _free
  545.     addq.w    #4,a7
  546.     subq.l    #1,d2
  547. L345
  548.     cmp.l    #0,d2
  549.     ble.b    L344
  550. L346
  551. ;            free(tmp_ctrl);
  552.     move.l    a2,-(a7)
  553.     jsr    _free
  554.     addq.w    #4,a7
  555. ;            free(s_knot->alpha);
  556.     move.l    $8(a5),a1
  557.     move.l    $26(a1),-(a7)
  558.     jsr    _free
  559.     addq.w    #4,a7
  560.     move.l    d3,d0
  561.     movem.l    (a7)+,d2-d5/a2-a4
  562.     unlk    a5
  563.     rts
  564. L347
  565. ;        ctrl_offset+=attrib->t_stride;
  566.     move.l    $10(a5),a0
  567.     move.l    $14(a0),d0
  568.     moveq    #2,d1
  569.     asl.l    d1,d0
  570.     add.l    a3,d0
  571.     move.l    d0,a3
  572.     addq.l    #1,d2
  573. L348
  574.     cmp.l    d5,d2
  575.     blt.b    L342
  576. L349
  577. ;    free(s_knot->alpha);
  578.     move.l    $8(a5),a1
  579.     move.l    $26(a1),-(a7)
  580.     jsr    _free
  581.     addq.w    #4,a7
  582. ;    tmp_stride=dim*tmp_n_control;
  583.     move.l    d4,d3
  584.     muls.l    -$C(a5),d3
  585. ;    if((*new_ctrl=(GLfloat *)malloc(sizeof(GLfloat)*tmp_stride*t_cnt))
  586.     move.l    d3,d0
  587.     moveq    #2,d3
  588.     asl.l    d3,d0
  589.     mulu.l    d5,d0
  590.     move.l    d0,-(a7)
  591.     jsr    _malloc
  592.     addq.w    #4,a7
  593.     move.l    a4,a1
  594.     move.l    d0,(a1)
  595.     move.l    d0,a0
  596.     cmp.w    #0,a0
  597.     bne.b    L354
  598. L350
  599. ;        for(i=0;
  600.     moveq    #0,d2
  601.     bra.b    L352
  602. L351
  603. ;            free(tmp_ctrl[i]);
  604.     move.l    0(a2,d2.l*4),-(a7)
  605.     jsr    _free
  606.     addq.w    #4,a7
  607.     addq.l    #1,d2
  608. L352
  609.     cmp.l    d5,d2
  610.     blt.b    L351
  611. L353
  612. ;        free(tmp_ctrl);
  613.     move.l    a2,-(a7)
  614.     jsr    _free
  615.     addq.w    #4,a7
  616.     move.l    #$18A26,d0
  617.     movem.l    (a7)+,d2-d5/a2-a4
  618.     unlk    a5
  619.     rts
  620. L354
  621. ;    for(i=0;
  622.     moveq    #0,d2
  623.     bra.b    L359
  624. L355
  625. ;        for(j=0;
  626.     moveq    #0,d3
  627.     bra.b    L357
  628. L356
  629. ;                sizeof(GLfloat)*dim);
  630.     move.l    d4,d0
  631.     moveq    #2,d1
  632.     asl.l    d1,d0
  633.     move.l    d0,-(a7)
  634.     move.l    d4,d0
  635.     muls.l    d2,d0
  636.     move.l    0(a2,d3.l*4),a0
  637.     pea    0(a0,d0.l*4)
  638.     move.l    a4,a1
  639.     move.l    d3,d0
  640.     muls.l    d4,d0
  641.     move.l    (a1),a0
  642.     lea    0(a0,d0.l*4),a0
  643.     move.l    d2,d0
  644.     muls.l    d4,d0
  645.     muls.l    d5,d0
  646.     pea    0(a0,d0.l*4)
  647.     jsr    _memcpy
  648.     add.w    #$C,a7
  649.     addq.l    #1,d3
  650. L357
  651.     cmp.l    d5,d3
  652.     blt.b    L356
  653. L358
  654.     addq.l    #1,d2
  655. L359
  656.     cmp.l    -$C(a5),d2
  657.     blt.b    L355
  658. L360
  659. ;    for(i=0;
  660.     moveq    #0,d2
  661.     bra.b    L362
  662. L361
  663. ;        free(tmp_ctrl[i]);
  664.     move.l    0(a2,d2.l*4),-(a7)
  665.     jsr    _free
  666.     addq.w    #4,a7
  667.     addq.l    #1,d2
  668. L362
  669.     cmp.l    d5,d2
  670.     blt.b    L361
  671. L363
  672. ;    free(tmp_ctrl);
  673.     move.l    a2,-(a7)
  674.     jsr    _free
  675.     addq.w    #4,a7
  676. ;    *s_n_ctrl=tmp_n_control;
  677.     move.l    $18(a5),a0
  678.     move.l    -$C(a5),(a0)
  679. ;    if((tmp_ctrl=(GLfloat **)malloc(sizeof(GLfloat *)*(*s_n_ctrl)))==N
  680.     move.l    $18(a5),a0
  681.     move.l    (a0),d0
  682.     moveq    #2,d1
  683.     asl.l    d1,d0
  684.     move.l    d0,-(a7)
  685.     jsr    _malloc
  686.     addq.w    #4,a7
  687.     move.l    d0,a2
  688.     cmp.w    #0,a2
  689.     bne.b    L365
  690. L364
  691.     move.l    #$18A26,d0
  692.     movem.l    (a7)+,d2-d5/a2-a4
  693.     unlk    a5
  694.     rts
  695. L365
  696. ;    if((err=explode_knot(t_knot))!=GLU_NO_ERROR)
  697.     move.l    $C(a5),-(a7)
  698.     jsr    _explode_knot
  699.     addq.w    #4,a7
  700.     move.l    d0,d3
  701.     beq.b    L369
  702. L366
  703. ;        free(tmp_ctrl);
  704.     move.l    a2,-(a7)
  705.     jsr    _free
  706.     addq.w    #4,a7
  707. ;        if(t_knot->unified_knot)
  708.     move.l    $C(a5),a1
  709.     tst.l    $8(a1)
  710.     beq.b    L368
  711. L367
  712. ;            free(t_knot->unified_knot);
  713.     move.l    $C(a5),a1
  714.     move.l    $8(a1),-(a7)
  715.     jsr    _free
  716.     addq.w    #4,a7
  717. ;            t_knot->unified_knot=NULL;
  718.     move.l    $C(a5),a1
  719.     clr.l    $8(a1)
  720. L368
  721.     move.l    d3,d0
  722.     movem.l    (a7)+,d2-d5/a2-a4
  723.     unlk    a5
  724.     rts
  725. L369
  726. ;    if(t_knot->unified_knot)
  727.     move.l    $C(a5),a1
  728.     tst.l    $8(a1)
  729.     beq.b    L371
  730. L370
  731. ;        free(t_knot->unified_knot);
  732.     move.l    $C(a5),a1
  733.     move.l    $8(a1),-(a7)
  734.     jsr    _free
  735.     addq.w    #4,a7
  736. ;        t_knot->unified_knot=NULL;
  737.     move.l    $C(a5),a1
  738.     clr.l    $8(a1)
  739. L371
  740. ;    if((err=calc_alphas(t_knot))!=GLU_NO_ERROR)
  741.     move.l    $C(a5),-(a7)
  742.     jsr    _calc_alphas
  743.     addq.w    #4,a7
  744.     move.l    d0,d3
  745.     beq.b    L373
  746. L372
  747. ;        free(tmp_ctrl);
  748.     move.l    a2,-(a7)
  749.     jsr    _free
  750.     addq.w    #4,a7
  751. ;        free(t_knot->new_knot);
  752.     move.l    $C(a5),a1
  753.     move.l    $22(a1),-(a7)
  754.     jsr    _free
  755.     addq.w    #4,a7
  756.     move.l    d3,d0
  757.     movem.l    (a7)+,d2-d5/a2-a4
  758.     unlk    a5
  759.     rts
  760. L373
  761. ;    free(t_knot->new_knot);
  762.     move.l    $C(a5),a1
  763.     move.l    $22(a1),-(a7)
  764.     jsr    _free
  765.     addq.w    #4,a7
  766. ;    ctrl_offset=*new_ctrl;
  767.     move.l    a4,a0
  768.     move.l    (a0),a3
  769. ;    for(i=0;
  770.     moveq    #0,d2
  771.     bra.b    L380
  772. L374
  773. ;        if((err=calc_new_ctrl_pts(ctrl_offset,dim,t_knot,
  774.     pea    -$C(a5)
  775.     pea    0(a2,d2.l*4)
  776.     move.l    d4,-(a7)
  777.     move.l    $C(a5),-(a7)
  778.     move.l    d4,-(a7)
  779.     move.l    a3,-(a7)
  780.     jsr    _calc_new_ctrl_pts
  781.     add.w    #$18,a7
  782.     move.l    d0,d3
  783.     beq.b    L379
  784. L375
  785. ;            for(--i;
  786.     subq.l    #1,d2
  787.     bra.b    L377
  788. L376
  789. ;                free(tmp_ctrl[i]);
  790.     move.l    0(a2,d2.l*4),-(a7)
  791.     jsr    _free
  792.     addq.w    #4,a7
  793.     subq.l    #1,d2
  794. L377
  795.     cmp.l    #0,d2
  796.     ble.b    L376
  797. L378
  798. ;            free(tmp_ctrl);
  799.     move.l    a2,-(a7)
  800.     jsr    _free
  801.     addq.w    #4,a7
  802. ;            free(t_knot->alpha);
  803.     move.l    $C(a5),a1
  804.     move.l    $26(a1),-(a7)
  805.     jsr    _free
  806.     addq.w    #4,a7
  807.     move.l    d3,d0
  808.     movem.l    (a7)+,d2-d5/a2-a4
  809.     unlk    a5
  810.     rts
  811. L379
  812. ;        ctrl_offset+=dim*t_cnt;
  813.     move.l    d4,d0
  814.     muls.l    d5,d0
  815.     moveq    #2,d1
  816.     asl.l    d1,d0
  817.     add.l    a3,d0
  818.     move.l    d0,a3
  819.     addq.l    #1,d2
  820. L380
  821.     move.l    $18(a5),a0
  822.     cmp.l    (a0),d2
  823.     blt.b    L374
  824. L381
  825. ;    free(t_knot->alpha);
  826.     move.l    $C(a5),a1
  827.     move.l    $26(a1),-(a7)
  828.     jsr    _free
  829.     addq.w    #4,a7
  830. ;    free(*new_ctrl);
  831.     move.l    a4,a1
  832.     move.l    (a1),-(a7)
  833.     jsr    _free
  834.     addq.w    #4,a7
  835. ;    tmp_stride=dim*tmp_n_control;
  836.     move.l    d4,d3
  837.     muls.l    -$C(a5),d3
  838. ;    if((*new_ctrl=(GLfloat *)malloc(sizeof(GLfloat)*tmp_stride*(*s_n_c
  839.     move.l    d3,d0
  840.     moveq    #2,d1
  841.     asl.l    d1,d0
  842.     move.l    $18(a5),a0
  843.     mulu.l    (a0),d0
  844.     move.l    d0,-(a7)
  845.     jsr    _malloc
  846.     addq.w    #4,a7
  847.     move.l    a4,a1
  848.     move.l    d0,(a1)
  849.     move.l    d0,a0
  850.     cmp.w    #0,a0
  851.     bne.b    L386
  852. L382
  853. ;        for(i=0;
  854.     moveq    #0,d2
  855.     bra.b    L384
  856. L383
  857. ;            free(tmp_ctrl[i]);
  858.     move.l    0(a2,d2.l*4),-(a7)
  859.     jsr    _free
  860.     addq.w    #4,a7
  861.     addq.l    #1,d2
  862. L384
  863.     move.l    $18(a5),a0
  864.     cmp.l    (a0),d2
  865.     blt.b    L383
  866. L385
  867. ;        free(tmp_ctrl);
  868.     move.l    a2,-(a7)
  869.     jsr    _free
  870.     addq.w    #4,a7
  871.     move.l    #$18A26,d0
  872.     movem.l    (a7)+,d2-d5/a2-a4
  873.     unlk    a5
  874.     rts
  875. L386
  876. ;    for(i=0;
  877.     moveq    #0,d2
  878.     bra.b    L388
  879. L387
  880. ;i*tmp_stride,tmp_
  881.     move.l    d3,d0
  882.     moveq    #2,d1
  883.     asl.l    d1,d0
  884.     move.l    d0,-(a7)
  885.     move.l    0(a2,d2.l*4),-(a7)
  886.     move.l    a4,a1
  887.     move.l    d2,d0
  888.     muls.l    d3,d0
  889.     move.l    (a1),a0
  890.     pea    0(a0,d0.l*4)
  891.     jsr    _memcpy
  892.     add.w    #$C,a7
  893. ;        free(tmp_ctrl[i]);
  894.     move.l    0(a2,d2.l*4),-(a7)
  895.     jsr    _free
  896.     addq.w    #4,a7
  897.     addq.l    #1,d2
  898. L388
  899.     move.l    $18(a5),a0
  900.     cmp.l    (a0),d2
  901.     blt.b    L387
  902. L389
  903. ;    free(tmp_ctrl);
  904.     move.l    a2,-(a7)
  905.     jsr    _free
  906.     addq.w    #4,a7
  907. ;    *t_n_ctrl=tmp_n_control;
  908.     move.l    $1C(a5),a0
  909.     move.l    -$C(a5),(a0)
  910.     moveq    #0,d0
  911.     movem.l    (a7)+,d2-d5/a2-a4
  912.     unlk    a5
  913.     rts
  914.  
  915.     SECTION "_fill_knot_structures:0",CODE
  916.  
  917.  
  918. ;static GLenum
  919. _fill_knot_structures
  920. L465    EQU    -$14
  921.     link    a5,#L465
  922.     movem.l    d2-d4/a2-a4,-(a7)
  923.     move.l    $8(a5),a3
  924.     move.l    $28(a5),a4
  925. L391
  926. ;    geom_s_knot->unified_knot=NULL;
  927.     move.l    $C(a5),a1
  928.     clr.l    $8(a1)
  929. ;    knot=geom_s_knot->knot=nobj->surface.geom.sknot;
  930.     move.l    $BC(a3),a2
  931.     move.l    $C(a5),a0
  932.     move.l    a2,(a0)
  933. ;    nknots=geom_s_knot->nknots=nobj->surface.geom.sknot_count;
  934.     move.l    $B8(a3),d4
  935.     move.l    $C(a5),a0
  936.     move.l    d4,4(a0)
  937. ;    order=geom_s_knot->order=nobj->surface.geom.sorder;
  938.     move.l    $D4(a3),d0
  939.     move.l    $C(a5),a0
  940.     move.l    d0,$10(a0)
  941. ;    geom_s_knot->delta_nknots=0;
  942.     move.l    $C(a5),a0
  943.     clr.l    $1C(a0)
  944. ;    t_min=geom_s_knot->t_min=order-1;
  945.     move.l    d0,d3
  946.     subq.l    #1,d3
  947.     move.l    $C(a5),a0
  948.     move.l    d3,$14(a0)
  949. ;    t_max=geom_s_knot->t_max=nknots-order;
  950.     move.l    d4,d2
  951.     sub.l    d0,d2
  952.     move.l    $C(a5),a0
  953.     move.l    d2,$18(a0)
  954. ;    if(fabs(knot[t_min]-knot[t_max])<EPSILON)
  955.     fmove.s    0(a2,d3.l*4),fp0
  956.     fsub.s    0(a2,d2.l*4),fp0
  957.     fmove.d    fp0,-(a7)
  958.     jsr    _fabs__r
  959.     addq.w    #$8,a7
  960.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  961.     fboge.b    L393
  962. L392
  963. ;        call_user_error(nobj,GLU_NURBS_ERROR3);
  964.     move.l    #$1879D,-(a7)
  965.     move.l    a3,-(a7)
  966.     jsr    _call_user_error
  967.     addq.w    #$8,a7
  968.     move.l    #$18707,d0
  969.     movem.l    (a7)+,d2-d4/a2-a4
  970.     unlk    a5
  971.     rts
  972. L393
  973. ;    if(fabs(knot[0]-knot[t_min])<EPSILON)
  974.     fmove.s    (a2),fp0
  975.     fsub.s    0(a2,d3.l*4),fp0
  976.     fmove.d    fp0,-(a7)
  977.     jsr    _fabs__r
  978.     addq.w    #$8,a7
  979.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  980.     fboge.b    L395
  981. L394
  982. ;        geom_s_knot->open_at_begin=GL_TRUE;
  983.     move.l    $C(a5),a0
  984.     move.b    #1,$20(a0)
  985.     bra.b    L396
  986. L395
  987. ;        geom_s_knot->open_at_begin=GL_FALSE;
  988.     move.l    $C(a5),a0
  989.     clr.b    $20(a0)
  990. L396
  991. ;    if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
  992.     lea    -4(a2),a0
  993.     fmove.s    0(a2,d2.l*4),fp0
  994.     fsub.s    0(a0,d4.l*4),fp0
  995.     fmove.d    fp0,-(a7)
  996.     jsr    _fabs__r
  997.     addq.w    #$8,a7
  998.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  999.     fboge.b    L398
  1000. L397
  1001. ;        geom_s_knot->open_at_end=GL_TRUE;
  1002.     move.l    $C(a5),a0
  1003.     move.b    #1,$21(a0)
  1004.     bra.b    L399
  1005. L398
  1006. ;        geom_s_knot->open_at_end=GL_FALSE;
  1007.     move.l    $C(a5),a0
  1008.     clr.b    $21(a0)
  1009. L399
  1010. ;    geom_t_knot->unified_knot=NULL;
  1011.     move.l    $10(a5),a1
  1012.     clr.l    $8(a1)
  1013. ;    knot=geom_t_knot->knot=nobj->surface.geom.tknot;
  1014.     move.l    $C4(a3),a2
  1015.     move.l    $10(a5),a0
  1016.     move.l    a2,(a0)
  1017. ;    nknots=geom_t_knot->nknots=nobj->surface.geom.tknot_count;
  1018.     move.l    $C0(a3),d4
  1019.     move.l    $10(a5),a0
  1020.     move.l    d4,4(a0)
  1021. ;    order=geom_t_knot->order=nobj->surface.geom.torder;
  1022.     move.l    $D8(a3),d0
  1023.     move.l    $10(a5),a0
  1024.     move.l    d0,$10(a0)
  1025. ;    geom_t_knot->delta_nknots=0;
  1026.     move.l    $10(a5),a0
  1027.     clr.l    $1C(a0)
  1028. ;    t_min=geom_t_knot->t_min=order-1;
  1029.     move.l    d0,d3
  1030.     subq.l    #1,d3
  1031.     move.l    $10(a5),a0
  1032.     move.l    d3,$14(a0)
  1033. ;    t_max=geom_t_knot->t_max=nknots-order;
  1034.     move.l    d4,d2
  1035.     sub.l    d0,d2
  1036.     move.l    $10(a5),a0
  1037.     move.l    d2,$18(a0)
  1038. ;    if(fabs(knot[t_min]-knot[t_max])<EPSILON)
  1039.     fmove.s    0(a2,d3.l*4),fp0
  1040.     fsub.s    0(a2,d2.l*4),fp0
  1041.     fmove.d    fp0,-(a7)
  1042.     jsr    _fabs__r
  1043.     addq.w    #$8,a7
  1044.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1045.     fboge.b    L401
  1046. L400
  1047. ;        call_user_error(nobj,GLU_NURBS_ERROR3);
  1048.     move.l    #$1879D,-(a7)
  1049.     move.l    a3,-(a7)
  1050.     jsr    _call_user_error
  1051.     addq.w    #$8,a7
  1052.     move.l    #$18707,d0
  1053.     movem.l    (a7)+,d2-d4/a2-a4
  1054.     unlk    a5
  1055.     rts
  1056. L401
  1057. ;    if(fabs(knot[0]-knot[t_min])<EPSILON)
  1058.     fmove.s    (a2),fp0
  1059.     fsub.s    0(a2,d3.l*4),fp0
  1060.     fmove.d    fp0,-(a7)
  1061.     jsr    _fabs__r
  1062.     addq.w    #$8,a7
  1063.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1064.     fboge.b    L403
  1065. L402
  1066. ;        geom_t_knot->open_at_begin=GL_TRUE;
  1067.     move.l    $10(a5),a0
  1068.     move.b    #1,$20(a0)
  1069.     bra.b    L404
  1070. L403
  1071. ;        geom_t_knot->open_at_begin=GL_FALSE;
  1072.     move.l    $10(a5),a0
  1073.     clr.b    $20(a0)
  1074. L404
  1075. ;    if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
  1076.     lea    -4(a2),a0
  1077.     fmove.s    0(a2,d2.l*4),fp0
  1078.     fsub.s    0(a0,d4.l*4),fp0
  1079.     fmove.d    fp0,-(a7)
  1080.     jsr    _fabs__r
  1081.     addq.w    #$8,a7
  1082.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1083.     fboge.b    L406
  1084. L405
  1085. ;        geom_t_knot->open_at_end=GL_TRUE;
  1086.     move.l    $10(a5),a0
  1087.     move.b    #1,$21(a0)
  1088.     bra.b    L407
  1089. L406
  1090. ;        geom_t_knot->open_at_end=GL_FALSE;
  1091.     move.l    $10(a5),a0
  1092.     clr.b    $21(a0)
  1093. L407
  1094. ;    if(nobj->surface.color.type!=GLU_INVALID_ENUM)
  1095.     move.l    $10C(a3),d0
  1096.     cmp.l    #$18A24,d0
  1097.     beq    L425
  1098. L408
  1099. ;        color_s_knot->unified_knot=(GLfloat *)1;
  1100.     move.l    $14(a5),a1
  1101.     move.l    #1,$8(a1)
  1102. ;        knot=color_s_knot->knot=nobj->surface.color.sknot;
  1103.     move.l    $E8(a3),a2
  1104.     move.l    $14(a5),a0
  1105.     move.l    a2,(a0)
  1106. ;        nknots=color_s_knot->nknots=nobj->surface.color.sknot_count;
  1107.     move.l    $E4(a3),d4
  1108.     move.l    $14(a5),a0
  1109.     move.l    d4,4(a0)
  1110. ;        order=color_s_knot->order=nobj->surface.color.sorder;
  1111.     move.l    $100(a3),d0
  1112.     move.l    $14(a5),a0
  1113.     move.l    d0,$10(a0)
  1114. ;        color_s_knot->delta_nknots=0;
  1115.     move.l    $14(a5),a0
  1116.     clr.l    $1C(a0)
  1117. ;        t_min=color_s_knot->t_min=order-1;
  1118.     move.l    d0,d3
  1119.     subq.l    #1,d3
  1120.     move.l    $14(a5),a0
  1121.     move.l    d3,$14(a0)
  1122. ;        t_max=color_s_knot->t_max=nknots-order;
  1123.     move.l    d4,d2
  1124.     sub.l    d0,d2
  1125.     move.l    $14(a5),a0
  1126.     move.l    d2,$18(a0)
  1127. ;        if(fabs(knot[t_min]-knot[t_max])<EPSILON)
  1128.     fmove.s    0(a2,d3.l*4),fp0
  1129.     fsub.s    0(a2,d2.l*4),fp0
  1130.     fmove.d    fp0,-(a7)
  1131.     jsr    _fabs__r
  1132.     addq.w    #$8,a7
  1133.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1134.     fboge.b    L410
  1135. L409
  1136. ;            call_user_error(nobj,GLU_NURBS_ERROR3);
  1137.     move.l    #$1879D,-(a7)
  1138.     move.l    a3,-(a7)
  1139.     jsr    _call_user_error
  1140.     addq.w    #$8,a7
  1141.     move.l    #$18707,d0
  1142.     movem.l    (a7)+,d2-d4/a2-a4
  1143.     unlk    a5
  1144.     rts
  1145. L410
  1146. ;        if(fabs(knot[0]-knot[t_min])<EPSILON)
  1147.     fmove.s    (a2),fp0
  1148.     fsub.s    0(a2,d3.l*4),fp0
  1149.     fmove.d    fp0,-(a7)
  1150.     jsr    _fabs__r
  1151.     addq.w    #$8,a7
  1152.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1153.     fboge.b    L412
  1154. L411
  1155. ;            color_s_knot->open_at_begin=GL_TRUE;
  1156.     move.l    $14(a5),a0
  1157.     move.b    #1,$20(a0)
  1158.     bra.b    L413
  1159. L412
  1160. ;            color_s_knot->open_at_begin=GL_FALSE;
  1161.     move.l    $14(a5),a0
  1162.     clr.b    $20(a0)
  1163. L413
  1164. ;        if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
  1165.     lea    -4(a2),a0
  1166.     fmove.s    0(a2,d2.l*4),fp0
  1167.     fsub.s    0(a0,d4.l*4),fp0
  1168.     fmove.d    fp0,-(a7)
  1169.     jsr    _fabs__r
  1170.     addq.w    #$8,a7
  1171.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1172.     fboge.b    L415
  1173. L414
  1174. ;            color_s_knot->open_at_end=GL_TRUE;
  1175.     move.l    $14(a5),a0
  1176.     move.b    #1,$21(a0)
  1177.     bra.b    L416
  1178. L415
  1179. ;            color_s_knot->open_at_end=GL_FALSE;
  1180.     move.l    $14(a5),a0
  1181.     clr.b    $21(a0)
  1182. L416
  1183. ;        color_t_knot->unified_knot=(GLfloat *)1;
  1184.     move.l    $18(a5),a1
  1185.     move.l    #1,$8(a1)
  1186. ;        knot=color_t_knot->knot=nobj->surface.color.tknot;
  1187.     move.l    $F0(a3),a2
  1188.     move.l    $18(a5),a0
  1189.     move.l    a2,(a0)
  1190. ;        nknots=color_t_knot->nknots=nobj->surface.color.tknot_count;
  1191.     move.l    $EC(a3),d4
  1192.     move.l    $18(a5),a0
  1193.     move.l    d4,4(a0)
  1194. ;        order=color_t_knot->order=nobj->surface.color.torder;
  1195.     move.l    $104(a3),d0
  1196.     move.l    $18(a5),a0
  1197.     move.l    d0,$10(a0)
  1198. ;        color_t_knot->delta_nknots=0;
  1199.     move.l    $18(a5),a0
  1200.     clr.l    $1C(a0)
  1201. ;        t_min=color_t_knot->t_min=order-1;
  1202.     move.l    d0,d3
  1203.     subq.l    #1,d3
  1204.     move.l    $18(a5),a0
  1205.     move.l    d3,$14(a0)
  1206. ;        t_max=color_t_knot->t_max=nknots-order;
  1207.     move.l    d4,d2
  1208.     sub.l    d0,d2
  1209.     move.l    $18(a5),a0
  1210.     move.l    d2,$18(a0)
  1211. ;        if(fabs(knot[t_min]-knot[t_max])<EPSILON)
  1212.     fmove.s    0(a2,d3.l*4),fp0
  1213.     fsub.s    0(a2,d2.l*4),fp0
  1214.     fmove.d    fp0,-(a7)
  1215.     jsr    _fabs__r
  1216.     addq.w    #$8,a7
  1217.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1218.     fboge.b    L418
  1219. L417
  1220. ;            call_user_error(nobj,GLU_NURBS_ERROR3);
  1221.     move.l    #$1879D,-(a7)
  1222.     move.l    a3,-(a7)
  1223.     jsr    _call_user_error
  1224.     addq.w    #$8,a7
  1225.     move.l    #$18707,d0
  1226.     movem.l    (a7)+,d2-d4/a2-a4
  1227.     unlk    a5
  1228.     rts
  1229. L418
  1230. ;        if(fabs(knot[0]-knot[t_min])<EPSILON)
  1231.     fmove.s    (a2),fp0
  1232.     fsub.s    0(a2,d3.l*4),fp0
  1233.     fmove.d    fp0,-(a7)
  1234.     jsr    _fabs__r
  1235.     addq.w    #$8,a7
  1236.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1237.     fboge.b    L420
  1238. L419
  1239. ;            color_t_knot->open_at_begin=GL_TRUE;
  1240.     move.l    $18(a5),a0
  1241.     move.b    #1,$20(a0)
  1242.     bra.b    L421
  1243. L420
  1244. ;            color_t_knot->open_at_begin=GL_FALSE;
  1245.     move.l    $18(a5),a0
  1246.     clr.b    $20(a0)
  1247. L421
  1248. ;        if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
  1249.     lea    -4(a2),a0
  1250.     fmove.s    0(a2,d2.l*4),fp0
  1251.     fsub.s    0(a0,d4.l*4),fp0
  1252.     fmove.d    fp0,-(a7)
  1253.     jsr    _fabs__r
  1254.     addq.w    #$8,a7
  1255.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1256.     fboge.b    L423
  1257. L422
  1258. ;            color_t_knot->open_at_end=GL_TRUE;
  1259.     move.l    $18(a5),a0
  1260.     move.b    #1,$21(a0)
  1261.     bra.b    L424
  1262. L423
  1263. ;            color_t_knot->open_at_end=GL_FALSE;
  1264.     move.l    $18(a5),a0
  1265.     clr.b    $21(a0)
  1266. L424
  1267.     bra.b    L426
  1268. L425
  1269. ;        color_s_knot->unified_knot=NULL;
  1270.     move.l    $14(a5),a1
  1271.     clr.l    $8(a1)
  1272. ;        color_t_knot->unified_knot=NULL;
  1273.     move.l    $18(a5),a1
  1274.     clr.l    $8(a1)
  1275. L426
  1276. ;    if(nobj->surface.normal.type!=GLU_INVALID_ENUM)
  1277.     move.l    $164(a3),d0
  1278.     cmp.l    #$18A24,d0
  1279.     beq    L444
  1280. L427
  1281. ;        normal_s_knot->unified_knot=(GLfloat *)1;
  1282.     move.l    $1C(a5),a1
  1283.     move.l    #1,$8(a1)
  1284. ;        knot=normal_s_knot->knot=nobj->surface.normal.sknot;
  1285.     move.l    $140(a3),a2
  1286.     move.l    $1C(a5),a0
  1287.     move.l    a2,(a0)
  1288. ;        nknots=normal_s_knot->nknots=nobj->surface.normal.sknot_count;
  1289.     move.l    $13C(a3),d4
  1290.     move.l    $1C(a5),a0
  1291.     move.l    d4,4(a0)
  1292. ;        order=normal_s_knot->order=nobj->surface.normal.sorder;
  1293.     move.l    $158(a3),d0
  1294.     move.l    $1C(a5),a0
  1295.     move.l    d0,$10(a0)
  1296. ;        normal_s_knot->delta_nknots=0;
  1297.     move.l    $1C(a5),a0
  1298.     clr.l    $1C(a0)
  1299. ;        t_min=normal_s_knot->t_min=order-1;
  1300.     move.l    d0,d3
  1301.     subq.l    #1,d3
  1302.     move.l    $1C(a5),a0
  1303.     move.l    d3,$14(a0)
  1304. ;        t_max=normal_s_knot->t_max=nknots-order;
  1305.     move.l    d4,d2
  1306.     sub.l    d0,d2
  1307.     move.l    $1C(a5),a0
  1308.     move.l    d2,$18(a0)
  1309. ;        if(fabs(knot[t_min]-knot[t_max])<EPSILON)
  1310.     fmove.s    0(a2,d3.l*4),fp0
  1311.     fsub.s    0(a2,d2.l*4),fp0
  1312.     fmove.d    fp0,-(a7)
  1313.     jsr    _fabs__r
  1314.     addq.w    #$8,a7
  1315.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1316.     fboge.b    L429
  1317. L428
  1318. ;            call_user_error(nobj,GLU_NURBS_ERROR3);
  1319.     move.l    #$1879D,-(a7)
  1320.     move.l    a3,-(a7)
  1321.     jsr    _call_user_error
  1322.     addq.w    #$8,a7
  1323.     move.l    #$18707,d0
  1324.     movem.l    (a7)+,d2-d4/a2-a4
  1325.     unlk    a5
  1326.     rts
  1327. L429
  1328. ;        if(fabs(knot[0]-knot[t_min])<EPSILON)
  1329.     fmove.s    (a2),fp0
  1330.     fsub.s    0(a2,d3.l*4),fp0
  1331.     fmove.d    fp0,-(a7)
  1332.     jsr    _fabs__r
  1333.     addq.w    #$8,a7
  1334.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1335.     fboge.b    L431
  1336. L430
  1337. ;            normal_s_knot->open_at_begin=GL_TRUE;
  1338.     move.l    $1C(a5),a0
  1339.     move.b    #1,$20(a0)
  1340.     bra.b    L432
  1341. L431
  1342. ;            normal_s_knot->open_at_begin=GL_FALSE;
  1343.     move.l    $1C(a5),a0
  1344.     clr.b    $20(a0)
  1345. L432
  1346. ;        if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
  1347.     lea    -4(a2),a0
  1348.     fmove.s    0(a2,d2.l*4),fp0
  1349.     fsub.s    0(a0,d4.l*4),fp0
  1350.     fmove.d    fp0,-(a7)
  1351.     jsr    _fabs__r
  1352.     addq.w    #$8,a7
  1353.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1354.     fboge.b    L434
  1355. L433
  1356. ;            normal_s_knot->open_at_end=GL_TRUE;
  1357.     move.l    $1C(a5),a0
  1358.     move.b    #1,$21(a0)
  1359.     bra.b    L435
  1360. L434
  1361. ;            normal_s_knot->open_at_end=GL_FALSE;
  1362.     move.l    $1C(a5),a0
  1363.     clr.b    $21(a0)
  1364. L435
  1365. ;        normal_t_knot->unified_knot=(GLfloat *)1;
  1366.     move.l    $20(a5),a1
  1367.     move.l    #1,$8(a1)
  1368. ;        knot=normal_t_knot->knot=nobj->surface.normal.tknot;
  1369.     move.l    $148(a3),a2
  1370.     move.l    $20(a5),a0
  1371.     move.l    a2,(a0)
  1372. ;        nknots=normal_t_knot->nknots=nobj->surface.normal.tknot_count;
  1373.     move.l    $144(a3),d4
  1374.     move.l    $20(a5),a0
  1375.     move.l    d4,4(a0)
  1376. ;        order=normal_t_knot->order=nobj->surface.normal.torder;
  1377.     move.l    $15C(a3),d0
  1378.     move.l    $20(a5),a0
  1379.     move.l    d0,$10(a0)
  1380. ;        normal_t_knot->delta_nknots=0;
  1381.     move.l    $20(a5),a0
  1382.     clr.l    $1C(a0)
  1383. ;        t_min=normal_t_knot->t_min=order-1;
  1384.     move.l    d0,d3
  1385.     subq.l    #1,d3
  1386.     move.l    $20(a5),a0
  1387.     move.l    d3,$14(a0)
  1388. ;        t_max=normal_t_knot->t_max=nknots-order;
  1389.     move.l    d4,d2
  1390.     sub.l    d0,d2
  1391.     move.l    $20(a5),a0
  1392.     move.l    d2,$18(a0)
  1393. ;        if(fabs(knot[t_min]-knot[t_max])<EPSILON)
  1394.     fmove.s    0(a2,d3.l*4),fp0
  1395.     fsub.s    0(a2,d2.l*4),fp0
  1396.     fmove.d    fp0,-(a7)
  1397.     jsr    _fabs__r
  1398.     addq.w    #$8,a7
  1399.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1400.     fboge.b    L437
  1401. L436
  1402. ;            call_user_error(nobj,GLU_NURBS_ERROR3);
  1403.     move.l    #$1879D,-(a7)
  1404.     move.l    a3,-(a7)
  1405.     jsr    _call_user_error
  1406.     addq.w    #$8,a7
  1407.     move.l    #$18707,d0
  1408.     movem.l    (a7)+,d2-d4/a2-a4
  1409.     unlk    a5
  1410.     rts
  1411. L437
  1412. ;        if(fabs(knot[0]-knot[t_min])<EPSILON)
  1413.     fmove.s    (a2),fp0
  1414.     fsub.s    0(a2,d3.l*4),fp0
  1415.     fmove.d    fp0,-(a7)
  1416.     jsr    _fabs__r
  1417.     addq.w    #$8,a7
  1418.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1419.     fboge.b    L439
  1420. L438
  1421. ;            normal_t_knot->open_at_begin=GL_TRUE;
  1422.     move.l    $20(a5),a0
  1423.     move.b    #1,$20(a0)
  1424.     bra.b    L440
  1425. L439
  1426. ;            normal_t_knot->open_at_begin=GL_FALSE;
  1427.     move.l    $20(a5),a0
  1428.     clr.b    $20(a0)
  1429. L440
  1430. ;        if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
  1431.     lea    -4(a2),a0
  1432.     fmove.s    0(a2,d2.l*4),fp0
  1433.     fsub.s    0(a0,d4.l*4),fp0
  1434.     fmove.d    fp0,-(a7)
  1435.     jsr    _fabs__r
  1436.     addq.w    #$8,a7
  1437.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1438.     fboge.b    L442
  1439. L441
  1440. ;            normal_t_knot->open_at_end=GL_TRUE;
  1441.     move.l    $20(a5),a0
  1442.     move.b    #1,$21(a0)
  1443.     bra.b    L443
  1444. L442
  1445. ;            normal_t_knot->open_at_end=GL_FALSE;
  1446.     move.l    $20(a5),a0
  1447.     clr.b    $21(a0)
  1448. L443
  1449.     bra.b    L445
  1450. L444
  1451. ;        normal_s_knot->unified_knot=NULL;
  1452.     move.l    $1C(a5),a1
  1453.     clr.l    $8(a1)
  1454. ;        normal_t_knot->unified_knot=NULL;
  1455.     move.l    $20(a5),a1
  1456.     clr.l    $8(a1)
  1457. L445
  1458. ;    if(nobj->surface.texture.type!=GLU_INVALID_ENUM)
  1459.     move.l    $138(a3),d0
  1460.     cmp.l    #$18A24,d0
  1461.     beq    L463
  1462. L446
  1463. ;        texture_s_knot->unified_knot=(GLfloat *)1;
  1464.     move.l    $24(a5),a1
  1465.     move.l    #1,$8(a1)
  1466. ;        knot=texture_s_knot->knot=nobj->surface.texture.sknot;
  1467.     move.l    $114(a3),a2
  1468.     move.l    $24(a5),a0
  1469.     move.l    a2,(a0)
  1470. ;        nknots=texture_s_knot->nknots=nobj->surface.texture.sknot_count;
  1471.     move.l    $110(a3),d4
  1472.     move.l    $24(a5),a0
  1473.     move.l    d4,4(a0)
  1474. ;        order=texture_s_knot->order=nobj->surface.texture.sorder;
  1475.     move.l    $12C(a3),d0
  1476.     move.l    $24(a5),a0
  1477.     move.l    d0,$10(a0)
  1478. ;        texture_s_knot->delta_nknots=0;
  1479.     move.l    $24(a5),a0
  1480.     clr.l    $1C(a0)
  1481. ;        t_min=texture_s_knot->t_min=order-1;
  1482.     move.l    d0,d3
  1483.     subq.l    #1,d3
  1484.     move.l    $24(a5),a0
  1485.     move.l    d3,$14(a0)
  1486. ;        t_max=texture_s_knot->t_max=nknots-order;
  1487.     move.l    d4,d2
  1488.     sub.l    d0,d2
  1489.     move.l    $24(a5),a0
  1490.     move.l    d2,$18(a0)
  1491. ;        if(fabs(knot[t_min]-knot[t_max])<EPSILON)
  1492.     fmove.s    0(a2,d3.l*4),fp0
  1493.     fsub.s    0(a2,d2.l*4),fp0
  1494.     fmove.d    fp0,-(a7)
  1495.     jsr    _fabs__r
  1496.     addq.w    #$8,a7
  1497.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1498.     fboge.b    L448
  1499. L447
  1500. ;            call_user_error(nobj,GLU_NURBS_ERROR3);
  1501.     move.l    #$1879D,-(a7)
  1502.     move.l    a3,-(a7)
  1503.     jsr    _call_user_error
  1504.     addq.w    #$8,a7
  1505.     move.l    #$18707,d0
  1506.     movem.l    (a7)+,d2-d4/a2-a4
  1507.     unlk    a5
  1508.     rts
  1509. L448
  1510. ;        if(fabs(knot[0]-knot[t_min])<EPSILON)
  1511.     fmove.s    (a2),fp0
  1512.     fsub.s    0(a2,d3.l*4),fp0
  1513.     fmove.d    fp0,-(a7)
  1514.     jsr    _fabs__r
  1515.     addq.w    #$8,a7
  1516.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1517.     fboge.b    L450
  1518. L449
  1519. ;            texture_s_knot->open_at_begin=GL_TRUE;
  1520.     move.l    $24(a5),a0
  1521.     move.b    #1,$20(a0)
  1522.     bra.b    L451
  1523. L450
  1524. ;            texture_s_knot->open_at_begin=GL_FALSE;
  1525.     move.l    $24(a5),a0
  1526.     clr.b    $20(a0)
  1527. L451
  1528. ;        if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
  1529.     lea    -4(a2),a0
  1530.     fmove.s    0(a2,d2.l*4),fp0
  1531.     fsub.s    0(a0,d4.l*4),fp0
  1532.     fmove.d    fp0,-(a7)
  1533.     jsr    _fabs__r
  1534.     addq.w    #$8,a7
  1535.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1536.     fboge.b    L453
  1537. L452
  1538. ;            texture_s_knot->open_at_end=GL_TRUE;
  1539.     move.l    $24(a5),a0
  1540.     move.b    #1,$21(a0)
  1541.     bra.b    L454
  1542. L453
  1543. ;            texture_s_knot->open_at_end=GL_FALSE;
  1544.     move.l    $24(a5),a0
  1545.     clr.b    $21(a0)
  1546. L454
  1547. ;        texture_t_knot->unified_knot=(GLfloat *)1;
  1548.     move.l    a4,a1
  1549.     move.l    #1,$8(a1)
  1550. ;        knot=texture_t_knot->knot=nobj->surface.texture.tknot;
  1551.     move.l    $11C(a3),a2
  1552.     move.l    a4,a0
  1553.     move.l    a2,(a0)
  1554. ;        nknots=texture_t_knot->nknots=nobj->surface.texture.tknot_count;
  1555.     move.l    $118(a3),d4
  1556.     move.l    a4,a0
  1557.     move.l    d4,4(a0)
  1558. ;        order=texture_t_knot->order=nobj->surface.texture.torder;
  1559.     move.l    $130(a3),d0
  1560.     move.l    a4,a0
  1561.     move.l    d0,$10(a0)
  1562. ;        texture_t_knot->delta_nknots=0;
  1563.     move.l    a4,a0
  1564.     clr.l    $1C(a0)
  1565. ;        t_min=texture_t_knot->t_min=order-1;
  1566.     move.l    d0,d3
  1567.     subq.l    #1,d3
  1568.     move.l    a4,a0
  1569.     move.l    d3,$14(a0)
  1570. ;        t_max=texture_t_knot->t_max=nknots-order;
  1571.     move.l    d4,d2
  1572.     sub.l    d0,d2
  1573.     move.l    a4,a0
  1574.     move.l    d2,$18(a0)
  1575. ;        if(fabs(knot[t_min]-knot[t_max])<EPSILON)
  1576.     fmove.s    0(a2,d3.l*4),fp0
  1577.     fsub.s    0(a2,d2.l*4),fp0
  1578.     fmove.d    fp0,-(a7)
  1579.     jsr    _fabs__r
  1580.     addq.w    #$8,a7
  1581.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1582.     fboge.b    L456
  1583. L455
  1584. ;            call_user_error(nobj,GLU_NURBS_ERROR3);
  1585.     move.l    #$1879D,-(a7)
  1586.     move.l    a3,-(a7)
  1587.     jsr    _call_user_error
  1588.     addq.w    #$8,a7
  1589.     move.l    #$18707,d0
  1590.     movem.l    (a7)+,d2-d4/a2-a4
  1591.     unlk    a5
  1592.     rts
  1593. L456
  1594. ;        if(fabs(knot[0]-knot[t_min])<EPSILON)
  1595.     fmove.s    (a2),fp0
  1596.     fsub.s    0(a2,d3.l*4),fp0
  1597.     fmove.d    fp0,-(a7)
  1598.     jsr    _fabs__r
  1599.     addq.w    #$8,a7
  1600.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1601.     fboge.b    L458
  1602. L457
  1603. ;            texture_t_knot->open_at_begin=GL_TRUE;
  1604.     move.l    a4,a0
  1605.     move.b    #1,$20(a0)
  1606.     bra.b    L459
  1607. L458
  1608. ;            texture_t_knot->open_at_begin=GL_FALSE;
  1609.     move.l    a4,a0
  1610.     clr.b    $20(a0)
  1611. L459
  1612. ;        if(fabs(knot[t_max]-knot[nknots-1])<EPSILON)
  1613.     lea    -4(a2),a0
  1614.     fmove.s    0(a2,d2.l*4),fp0
  1615.     fsub.s    0(a0,d4.l*4),fp0
  1616.     fmove.d    fp0,-(a7)
  1617.     jsr    _fabs__r
  1618.     addq.w    #$8,a7
  1619.     fcmp.d    #$.3EB0C6F7.A0B5ED8D,fp0
  1620.     fboge.b    L461
  1621. L460
  1622. ;            texture_t_knot->open_at_end=GL_TRUE;
  1623.     move.l    a4,a0
  1624.     move.b    #1,$21(a0)
  1625.     bra.b    L462
  1626. L461
  1627. ;            texture_t_knot->open_at_end=GL_FALSE;
  1628.     move.l    a4,a0
  1629.     clr.b    $21(a0)
  1630. L462
  1631.     bra.b    L464
  1632. L463
  1633. ;        texture_s_knot->unified_knot=NULL;
  1634.     move.l    $24(a5),a1
  1635.     clr.l    $8(a1)
  1636. ;        texture_t_knot->unified_knot=NULL;
  1637.     move.l    a4,a1
  1638.     clr.l    $8(a1)
  1639. L464
  1640.     moveq    #0,d0
  1641.     movem.l    (a7)+,d2-d4/a2-a4
  1642.     unlk    a5
  1643.     rts
  1644.  
  1645.     SECTION "_free_new_ctrl:0",CODE
  1646.  
  1647.  
  1648. ;void
  1649.     XDEF    _free_new_ctrl
  1650. _free_new_ctrl
  1651.     move.l    a2,-(a7)
  1652.     move.l    $8(a7),a2
  1653. L466
  1654. ;    if(p->geom_ctrl)
  1655.     tst.l    (a2)
  1656.     beq.b    L468
  1657. L467
  1658. ;        free(p->geom_ctrl);
  1659.     move.l    (a2),-(a7)
  1660.     jsr    _free
  1661.     addq.w    #4,a7
  1662. L468
  1663. ;    if(p->geom_offsets)
  1664.     tst.l    $C(a2)
  1665.     beq.b    L470
  1666. L469
  1667. ;        free(p->geom_offsets);
  1668.     move.l    $C(a2),-(a7)
  1669.     jsr    _free
  1670.     addq.w    #4,a7
  1671. L470
  1672. ;    if(p->color_ctrl)
  1673.     tst.l    $18(a2)
  1674.     beq.b    L473
  1675. L471
  1676. ;        free(p->color_ctrl);
  1677.     move.l    $18(a2),-(a7)
  1678.     jsr    _free
  1679.     addq.w    #4,a7
  1680. ;        if(p->color_offsets)
  1681.     tst.l    $24(a2)
  1682.     beq.b    L473
  1683. L472
  1684. ;            free(p->color_offsets);
  1685.     move.l    $24(a2),-(a7)
  1686.     jsr    _free
  1687.     addq.w    #4,a7
  1688. L473
  1689. ;    if(p->normal_ctrl)
  1690.     tst.l    $30(a2)
  1691.     beq.b    L476
  1692. L474
  1693. ;        free(p->normal_ctrl);
  1694.     move.l    $30(a2),-(a7)
  1695.     jsr    _free
  1696.     addq.w    #4,a7
  1697. ;        if(p->normal_offsets)
  1698.     tst.l    $3C(a2)
  1699.     beq.b    L476
  1700. L475
  1701. ;            free(p->normal_offsets);
  1702.     move.l    $3C(a2),-(a7)
  1703.     jsr    _free
  1704.     addq.w    #4,a7
  1705. L476
  1706. ;    if(p->texture_ctrl)
  1707.     tst.l    $48(a2)
  1708.     beq.b    L479
  1709. L477
  1710. ;        free(p->texture_ctrl);
  1711.     move.l    $48(a2),-(a7)
  1712.     jsr    _free
  1713.     addq.w    #4,a7
  1714. ;        if(p->texture_offsets)
  1715.     tst.l    $54(a2)
  1716.     beq.b    L479
  1717. L478
  1718. ;            free(p->texture_offsets);
  1719.     move.l    $54(a2),-(a7)
  1720.     jsr    _free
  1721.     addq.w    #4,a7
  1722. L479
  1723.     move.l    (a7)+,a2
  1724.     rts
  1725.  
  1726.     SECTION "_convert_surfs:0",CODE
  1727.  
  1728.  
  1729. ;static GLenum
  1730. _convert_surfs
  1731. L498    EQU    -$154
  1732.     link    a5,#L498
  1733.     movem.l    d2/a2/a3,-(a7)
  1734.     movem.l    $8(a5),a2/a3
  1735. L480
  1736. ;    if((err=fill_knot_structures(nobj,&geom_s_knot,&geom_t_knot,
  1737.     pea    -$150(a5)
  1738.     pea    -$A8(a5)
  1739.     pea    -$126(a5)
  1740.     pea    -$7E(a5)
  1741.     pea    -$FC(a5)
  1742.     pea    -$54(a5)
  1743.     pea    -$D2(a5)
  1744.     pea    -$2A(a5)
  1745.     move.l    a2,-(a7)
  1746.     jsr    _fill_knot_structures
  1747.     add.w    #$24,a7
  1748.     move.l    d0,d2
  1749.     beq.b    L482
  1750. L481
  1751.     move.l    d2,d0
  1752.     movem.l    (a7)+,d2/a2/a3
  1753.     unlk    a5
  1754.     rts
  1755. L482
  1756. ;    if((err=select_knot_working_range(nobj,&geom_s_knot,&color_s_knot,
  1757.     pea    -$A8(a5)
  1758.     pea    -$7E(a5)
  1759.     pea    -$54(a5)
  1760.     pea    -$2A(a5)
  1761.     move.l    a2,-(a7)
  1762.     jsr    _select_knot_working_range
  1763.     add.w    #$14,a7
  1764.     move.l    d0,d2
  1765.     beq.b    L484
  1766. L483
  1767. ;        call_user_error(nobj,err);
  1768.     move.l    d2,-(a7)
  1769.     move.l    a2,-(a7)
  1770.     jsr    _call_user_error
  1771.     addq.w    #$8,a7
  1772.     move.l    d2,d0
  1773.     movem.l    (a7)+,d2/a2/a3
  1774.     unlk    a5
  1775.     rts
  1776. L484
  1777. ;    if((err=select_knot_working_range(nobj,&geom_t_knot,&color_t_knot,
  1778.     pea    -$150(a5)
  1779.     pea    -$126(a5)
  1780.     pea    -$FC(a5)
  1781.     pea    -$D2(a5)
  1782.     move.l    a2,-(a7)
  1783.     jsr    _select_knot_working_range
  1784.     add.w    #$14,a7
  1785.     move.l    d0,d2
  1786.     beq.b    L486
  1787. L485
  1788. ;        free_unified_knots(&geom_s_knot,&color_s_knot,&normal_s_knot,
  1789.     pea    -$A8(a5)
  1790.     pea    -$7E(a5)
  1791.     pea    -$54(a5)
  1792.     pea    -$2A(a5)
  1793.     jsr    _free_unified_knots
  1794.     add.w    #$10,a7
  1795. ;        call_user_error(nobj,err);
  1796.     move.l    d2,-(a7)
  1797.     move.l    a2,-(a7)
  1798.     jsr    _call_user_error
  1799.     addq.w    #$8,a7
  1800.     move.l    d2,d0
  1801.     movem.l    (a7)+,d2/a2/a3
  1802.     unlk    a5
  1803.     rts
  1804. L486
  1805. ;    nobj->surface.geom.dim=get_surface_dim(nobj->surface.geom.type);
  1806.     move.l    $E0(a2),-(a7)
  1807.     jsr    _get_surface_dim
  1808.     addq.w    #4,a7
  1809.     move.l    d0,$DC(a2)
  1810. ;    if((err=convert_surf(&geom_s_knot,&geom_t_knot,&(nobj->surface.geo
  1811.     pea    $14(a3)
  1812.     pea    $10(a3)
  1813.     move.l    a3,-(a7)
  1814.     pea    $B8(a2)
  1815.     pea    -$D2(a5)
  1816.     pea    -$2A(a5)
  1817.     jsr    _convert_surf
  1818.     add.w    #$18,a7
  1819.     move.l    d0,d2
  1820.     beq.b    L488
  1821. L487
  1822. ;        free_unified_knots(&geom_s_knot,&color_s_knot,&normal_s_knot,
  1823.     pea    -$A8(a5)
  1824.     pea    -$7E(a5)
  1825.     pea    -$54(a5)
  1826.     pea    -$2A(a5)
  1827.     jsr    _free_unified_knots
  1828.     add.w    #$10,a7
  1829. ;        free_unified_knots(&geom_t_knot,&color_t_knot,&normal_t_knot,
  1830.     pea    -$150(a5)
  1831.     pea    -$126(a5)
  1832.     pea    -$FC(a5)
  1833.     pea    -$D2(a5)
  1834.     jsr    _free_unified_knots
  1835.     add.w    #$10,a7
  1836. ;        call_user_error(nobj,err);
  1837.     move.l    d2,-(a7)
  1838.     move.l    a2,-(a7)
  1839.     jsr    _call_user_error
  1840.     addq.w    #$8,a7
  1841.     move.l    d2,d0
  1842.     movem.l    (a7)+,d2/a2/a3
  1843.     unlk    a5
  1844.     rts
  1845. L488
  1846. ;    if(color_s_knot.unified_knot)
  1847.     tst.l    -$4C(a5)
  1848.     beq    L491
  1849. L489
  1850. ;        nobj->surface.color.dim=get_surface_dim(nobj->surface.color.type)
  1851.     move.l    $10C(a2),-(a7)
  1852.     jsr    _get_surface_dim
  1853.     addq.w    #4,a7
  1854.     move.l    d0,$108(a2)
  1855. ;        if((err=convert_surf(&color_s_knot,&color_t_knot,&(nobj->surface
  1856.     pea    $2C(a3)
  1857.     pea    $28(a3)
  1858.     pea    $18(a3)
  1859.     pea    $E4(a2)
  1860.     pea    -$FC(a5)
  1861.     pea    -$54(a5)
  1862.     jsr    _convert_surf
  1863.     add.w    #$18,a7
  1864.     move.l    d0,d2
  1865.     beq.b    L491
  1866. L490
  1867. ;            free_unified_knots(&color_s_knot,&color_s_knot,&normal_s_knot,
  1868.     pea    -$A8(a5)
  1869.     pea    -$7E(a5)
  1870.     pea    -$54(a5)
  1871.     pea    -$54(a5)
  1872.     jsr    _free_unified_knots
  1873.     add.w    #$10,a7
  1874. ;            free_unified_knots(&color_t_knot,&color_t_knot,&normal_t_knot,
  1875.     pea    -$150(a5)
  1876.     pea    -$126(a5)
  1877.     pea    -$FC(a5)
  1878.     pea    -$FC(a5)
  1879.     jsr    _free_unified_knots
  1880.     add.w    #$10,a7
  1881. ;            free_new_ctrl(new_ctrl);
  1882.     move.l    a3,-(a7)
  1883.     jsr    _free_new_ctrl
  1884.     addq.w    #4,a7
  1885. ;            call_user_error(nobj,err);
  1886.     move.l    d2,-(a7)
  1887.     move.l    a2,-(a7)
  1888.     jsr    _call_user_error
  1889.     addq.w    #$8,a7
  1890.     move.l    d2,d0
  1891.     movem.l    (a7)+,d2/a2/a3
  1892.     unlk    a5
  1893.     rts
  1894. L491
  1895. ;    if(normal_s_knot.unified_knot)
  1896.     tst.l    -$76(a5)
  1897.     beq    L494
  1898. L492
  1899. ;        nobj->surface.normal.dim=get_surface_dim(nobj->surface.normal.ty
  1900.     move.l    $164(a2),-(a7)
  1901.     jsr    _get_surface_dim
  1902.     addq.w    #4,a7
  1903.     move.l    d0,$160(a2)
  1904. ;        if((err=convert_surf(&normal_s_knot,&normal_t_knot,
  1905.     pea    $44(a3)
  1906.     pea    $40(a3)
  1907.     pea    $30(a3)
  1908.     pea    $13C(a2)
  1909.     pea    -$126(a5)
  1910.     pea    -$7E(a5)
  1911.     jsr    _convert_surf
  1912.     add.w    #$18,a7
  1913.     move.l    d0,d2
  1914.     beq.b    L494
  1915. L493
  1916. ;            free_unified_knots(&normal_s_knot,&normal_s_knot,&normal_s_kno
  1917.     pea    -$A8(a5)
  1918.     pea    -$7E(a5)
  1919.     pea    -$7E(a5)
  1920.     pea    -$7E(a5)
  1921.     jsr    _free_unified_knots
  1922.     add.w    #$10,a7
  1923. ;            free_unified_knots(&normal_t_knot,&normal_t_knot,&normal_t_kno
  1924.     pea    -$150(a5)
  1925.     pea    -$126(a5)
  1926.     pea    -$126(a5)
  1927.     pea    -$126(a5)
  1928.     jsr    _free_unified_knots
  1929.     add.w    #$10,a7
  1930. ;            free_new_ctrl(new_ctrl);
  1931.     move.l    a3,-(a7)
  1932.     jsr    _free_new_ctrl
  1933.     addq.w    #4,a7
  1934. ;            call_user_error(nobj,err);
  1935.     move.l    d2,-(a7)
  1936.     move.l    a2,-(a7)
  1937.     jsr    _call_user_error
  1938.     addq.w    #$8,a7
  1939.     move.l    d2,d0
  1940.     movem.l    (a7)+,d2/a2/a3
  1941.     unlk    a5
  1942.     rts
  1943. L494
  1944. ;    if(texture_s_knot.unified_knot)
  1945.     tst.l    -$A0(a5)
  1946.     beq    L497
  1947. L495
  1948. ;        nobj->surface.texture.dim=get_surface_dim(nobj->surface.texture.
  1949.     move.l    $138(a2),-(a7)
  1950.     jsr    _get_surface_dim
  1951.     addq.w    #4,a7
  1952.     move.l    d0,$134(a2)
  1953. ;        if((err=convert_surf(&texture_s_knot,&texture_t_knot,
  1954.     pea    $5C(a3)
  1955.     pea    $58(a3)
  1956.     pea    $48(a3)
  1957.     pea    $110(a2)
  1958.     pea    -$150(a5)
  1959.     pea    -$A8(a5)
  1960.     jsr    _convert_surf
  1961.     add.w    #$18,a7
  1962.     move.l    d0,d2
  1963.     beq.b    L497
  1964. L496
  1965. ;            free_unified_knots(&texture_s_knot,&texture_s_knot,&texture_s_
  1966.     pea    -$A8(a5)
  1967.     pea    -$A8(a5)
  1968.     pea    -$A8(a5)
  1969.     pea    -$A8(a5)
  1970.     jsr    _free_unified_knots
  1971.     add.w    #$10,a7
  1972. ;            free_unified_knots(&texture_t_knot,&texture_t_knot,&texture_t_
  1973.     pea    -$150(a5)
  1974.     pea    -$150(a5)
  1975.     pea    -$150(a5)
  1976.     pea    -$150(a5)
  1977.     jsr    _free_unified_knots
  1978.     add.w    #$10,a7
  1979. ;            free_new_ctrl(new_ctrl);
  1980.     move.l    a3,-(a7)
  1981.     jsr    _free_new_ctrl
  1982.     addq.w    #4,a7
  1983. ;            call_user_error(nobj,err);
  1984.     move.l    d2,-(a7)
  1985.     move.l    a2,-(a7)
  1986.     jsr    _call_user_error
  1987.     addq.w    #$8,a7
  1988.     move.l    d2,d0
  1989.     movem.l    (a7)+,d2/a2/a3
  1990.     unlk    a5
  1991.     rts
  1992. L497
  1993.     moveq    #0,d0
  1994.     movem.l    (a7)+,d2/a2/a3
  1995.     unlk    a5
  1996.     rts
  1997.  
  1998.     SECTION "_tesselate_strip_t_line:0",CODE
  1999.  
  2000.  
  2001. ;void
  2002.     XDEF    _tesselate_strip_t_line
  2003. _tesselate_strip_t_line
  2004. L514    EQU    -$20
  2005.     link    a5,#L514
  2006.     movem.l    d2-d7,-(a7)
  2007.     movem.l    $18(a5),d0/d7
  2008.     move.l    $C(a5),d1
  2009.     move.l    $8(a5),d2
  2010.     move.l    $20(a5),d3
  2011.     move.l    $14(a5),d5
  2012. L499
  2013. ;    top_cnt=top_end-top_start;
  2014.     sub.l    d2,d1
  2015.     move.l    d1,-4(a5)
  2016. ;    direction= (top_cnt>=0 ? 1: -1);
  2017.     tst.l    -4(a5)
  2018.     bmi.b    L501
  2019. L500
  2020.     moveq    #1,d6
  2021.     bra.b    L502
  2022. L501
  2023.     moveq    #-1,d6
  2024. L502
  2025. ;    bottom_cnt=bottom_end-bottom_start;
  2026.     sub.l    d5,d0
  2027.     move.l    d0,-$8(a5)
  2028. ;    glBegin(GL_LINES);
  2029.     pea    1.w
  2030.     jsr    _glBegin
  2031.     addq.w    #4,a7
  2032. ;    while(top_cnt)
  2033.     bra    L512
  2034. L503
  2035. ;        if(bottom_cnt)
  2036.     tst.l    -$8(a5)
  2037.     beq.b    L505
  2038. L504
  2039. ;            tri_cnt=top_cnt/bottom_cnt;
  2040.     move.l    -4(a5),d0
  2041.     divsl.l    -$8(a5),d0
  2042.     move.l    d0,-$C(a5)
  2043.     bra.b    L506
  2044. L505
  2045. ;            tri_cnt=abs(top_cnt);
  2046.     move.l    -4(a5),-(a7)
  2047.     jsr    _abs
  2048.     addq.w    #4,a7
  2049.     move.l    d0,-$C(a5)
  2050. L506
  2051. ;        for(k=0;
  2052.     moveq    #0,d4
  2053.     bra.b    L508
  2054. L507
  2055. ;            glEvalCoord2f((GLfloat)bottom_z/bottom_domain,
  2056.     fmove.l    d5,fp0
  2057.     fmove.l    d3,fp1
  2058.     fdiv.x    fp1,fp0
  2059.     fmove.s    fp0,-(a7)
  2060.     fmove.l    d7,fp0
  2061.     fmove.l    d3,fp1
  2062.     fdiv.x    fp1,fp0
  2063.     fmove.s    fp0,-(a7)
  2064.     jsr    _glEvalCoord2f
  2065.     addq.w    #$8,a7
  2066. ;            glEvalPoint2(top_z,top_start);
  2067.     move.l    d2,-(a7)
  2068.     move.l    $10(a5),-(a7)
  2069.     jsr    _glEvalPoint2
  2070.     addq.w    #$8,a7
  2071.     addq.l    #1,d4
  2072.     add.l    d6,d2
  2073. L508
  2074.     cmp.l    -$C(a5),d4
  2075.     ble.b    L507
  2076. L509
  2077. ;        if(bottom_cnt)
  2078.     tst.l    -$8(a5)
  2079.     beq    L511
  2080. L510
  2081. ;            glEvalCoord2f((GLfloat)bottom_z/bottom_domain,
  2082.     fmove.l    d5,fp0
  2083.     fmove.l    d3,fp1
  2084.     fdiv.x    fp1,fp0
  2085.     fmove.s    fp0,-(a7)
  2086.     fmove.l    d7,fp0
  2087.     fmove.l    d3,fp1
  2088.     fdiv.x    fp1,fp0
  2089.     fmove.s    fp0,-(a7)
  2090.     jsr    _glEvalCoord2f
  2091.     addq.w    #$8,a7
  2092. ;            bottom_start+=direction;
  2093.     add.l    d6,d5
  2094. ;            top_start-=direction;
  2095.     sub.l    d6,d2
  2096. ;            glEvalCoord2f((GLfloat)bottom_z/bottom_domain,
  2097.     fmove.l    d5,fp0
  2098.     fmove.l    d3,fp1
  2099.     fdiv.x    fp1,fp0
  2100.     fmove.s    fp0,-(a7)
  2101.     fmove.l    d7,fp0
  2102.     fmove.l    d3,fp1
  2103.     fdiv.x    fp1,fp0
  2104.     fmove.s    fp0,-(a7)
  2105.     jsr    _glEvalCoord2f
  2106.     addq.w    #$8,a7
  2107. ;            glEvalCoord2f((GLfloat)bottom_z/bottom_domain,
  2108.     fmove.l    d5,fp0
  2109.     fmove.l    d3,fp1
  2110.     fdiv.x    fp1,fp0
  2111.     fmove.s    fp0,-(a7)
  2112.     fmove.l    d7,fp0
  2113.     fmove.l    d3,fp1
  2114.     fdiv.x    fp1,fp0
  2115.     fmove.s    fp0,-(a7)
  2116.     jsr    _glEvalCoord2f
  2117.     addq.w    #$8,a7
  2118. ;            glEvalPoint2(top_z,top_start);
  2119.     move.l    d2,-(a7)
  2120.     move.l    $10(a5),-(a7)
  2121.     jsr    _glEvalPoint2
  2122.     addq.w    #$8,a7
  2123. L511
  2124. ;        top_cnt-=direction*tri_cnt;
  2125.     move.l    d6,d0
  2126.     muls.l    -$C(a5),d0
  2127.     sub.l    d0,-4(a5)
  2128. ;        bottom_cnt-=direction;
  2129.     sub.l    d6,-$8(a5)
  2130. L512
  2131.     tst.l    -4(a5)
  2132.     bne    L503
  2133. L513
  2134. ;    glEnd();
  2135.     jsr    _glEnd
  2136.     movem.l    (a7)+,d2-d7
  2137.     unlk    a5
  2138.     rts
  2139.  
  2140.     SECTION "_tesselate_strip_t_fill:0",CODE
  2141.  
  2142.  
  2143. ;void
  2144.     XDEF    _tesselate_strip_t_fill
  2145. _tesselate_strip_t_fill
  2146. L530    EQU    -$14
  2147.     link    a5,#L530
  2148.     movem.l    d2-d7,-(a7)
  2149.     move.l    $18(a5),d0
  2150.     move.l    $C(a5),d1
  2151.     move.l    $8(a5),d2
  2152. L515
  2153. ;    top_cnt=top_end-top_start;
  2154.     sub.l    d2,d1
  2155.     move.l    d1,d6
  2156. ;    direction= (top_cnt>=0 ? 1: -1);
  2157.     bmi.b    L517
  2158. L516
  2159.     moveq    #1,d4
  2160.     bra.b    L518
  2161. L517
  2162.     moveq    #-1,d4
  2163. L518
  2164. ;    bottom_cnt=bottom_end-bottom_start;
  2165.     sub.l    $14(a5),d0
  2166.     move.l    d0,d7
  2167. ;    while(top_cnt)
  2168.     bra    L528
  2169. L519
  2170. ;        if(bottom_cnt)
  2171.     tst.l    d7
  2172.     beq.b    L521
  2173. L520
  2174. ;            tri_cnt=top_cnt/bottom_cnt;
  2175.     move.l    d6,d5
  2176.     divsl.l    d7,d5
  2177.     bra.b    L522
  2178. L521
  2179. ;            tri_cnt=abs(top_cnt);
  2180.     move.l    d6,-(a7)
  2181.     jsr    _abs
  2182.     addq.w    #4,a7
  2183.     move.l    d0,d5
  2184. L522
  2185. ;        glBegin(GL_TRIANGLE_FAN);
  2186.     pea    6.w
  2187.     jsr    _glBegin
  2188.     addq.w    #4,a7
  2189. ;        glEvalCoord2f((GLfloat)bottom_z/bottom_domain,
  2190.     fmove.l    $14(a5),fp0
  2191.     fmove.l    $20(a5),fp1
  2192.     fdiv.x    fp1,fp0
  2193.     fmove.s    fp0,-(a7)
  2194.     fmove.l    $1C(a5),fp0
  2195.     fmove.l    $20(a5),fp1
  2196.     fdiv.x    fp1,fp0
  2197.     fmove.s    fp0,-(a7)
  2198.     jsr    _glEvalCoord2f
  2199.     addq.w    #$8,a7
  2200. ;        for(k=0;
  2201.     moveq    #0,d3
  2202.     bra.b    L524
  2203. L523
  2204. ;            glEvalPoint2(top_z,top_start);
  2205.     move.l    d2,-(a7)
  2206.     move.l    $10(a5),-(a7)
  2207.     jsr    _glEvalPoint2
  2208.     addq.w    #$8,a7
  2209.     addq.l    #1,d3
  2210.     add.l    d4,d2
  2211. L524
  2212.     cmp.l    d5,d3
  2213.     ble.b    L523
  2214. L525
  2215. ;        if(bottom_cnt)
  2216.     tst.l    d7
  2217.     beq.b    L527
  2218. L526
  2219. ;            bottom_start+=direction;
  2220.     add.l    d4,$14(a5)
  2221. ;            top_start-=direction;
  2222.     sub.l    d4,d2
  2223. ;            glEvalCoord2f((GLfloat)bottom_z/bottom_domain,
  2224.     fmove.l    $14(a5),fp0
  2225.     fmove.l    $20(a5),fp1
  2226.     fdiv.x    fp1,fp0
  2227.     fmove.s    fp0,-(a7)
  2228.     fmove.l    $1C(a5),fp0
  2229.     fmove.l    $20(a5),fp1
  2230.     fdiv.x    fp1,fp0
  2231.     fmove.s    fp0,-(a7)
  2232.     jsr    _glEvalCoord2f
  2233.     addq.w    #$8,a7
  2234. L527
  2235. ;        glEnd();
  2236.     jsr    _glEnd
  2237. ;        top_cnt-=direction*tri_cnt;
  2238.     move.l    d4,d0
  2239.     muls.l    d5,d0
  2240.     move.l    d6,d1
  2241.     sub.l    d0,d1
  2242.     move.l    d1,d6
  2243. ;        bottom_cnt-=direction;
  2244.     move.l    d7,d0
  2245.     sub.l    d4,d0
  2246.     move.l    d0,d7
  2247. L528
  2248.     tst.l    d6
  2249.     bne    L519
  2250. L529
  2251.     movem.l    (a7)+,d2-d7
  2252.     unlk    a5
  2253.     rts
  2254.  
  2255.     SECTION "_tesselate_strip_t:0",CODE
  2256.  
  2257.  
  2258. ;void
  2259.     XDEF    _tesselate_strip_t
  2260. _tesselate_strip_t
  2261.     movem.l    d2-d7,-(a7)
  2262.     movem.l    $20(a7),d0-d5/d7
  2263.     move.l    $1C(a7),d6
  2264. L531
  2265. ;    if(display_mode==GL_FILL)
  2266.     cmp.l    #$1B02,d6
  2267.     bne.b    L533
  2268. L532
  2269. ;        tesselate_strip_t_fill(top_start,top_end,top_z,bottom_start,
  2270.     move.l    d7,-(a7)
  2271.     move.l    d5,-(a7)
  2272.     move.l    d4,-(a7)
  2273.     move.l    d3,-(a7)
  2274.     move.l    d2,-(a7)
  2275.     move.l    d1,-(a7)
  2276.     move.l    d0,-(a7)
  2277.     jsr    _tesselate_strip_t_fill
  2278.     add.w    #$1C,a7
  2279.     bra.b    L534
  2280. L533
  2281. ;        tesselate_strip_t_line(top_start,top_end,top_z,bottom_start,
  2282.     move.l    d7,-(a7)
  2283.     move.l    d5,-(a7)
  2284.     move.l    d4,-(a7)
  2285.     move.l    d3,-(a7)
  2286.     move.l    d2,-(a7)
  2287.     move.l    d1,-(a7)
  2288.     move.l    d0,-(a7)
  2289.     jsr    _tesselate_strip_t_line
  2290.     add.w    #$1C,a7
  2291. L534
  2292.     movem.l    (a7)+,d2-d7
  2293.     rts
  2294.  
  2295.     SECTION "_tesselate_strip_s_fill:0",CODE
  2296.  
  2297.  
  2298. ;void
  2299.     XDEF    _tesselate_strip_s_fill
  2300. _tesselate_strip_s_fill
  2301. L550    EQU    -$14
  2302.     link    a5,#L550
  2303.     movem.l    d2-d7,-(a7)
  2304.     fmovem.x fp2,-(a7)
  2305.     move.l    $18(a5),d0
  2306.     move.l    $C(a5),d1
  2307.     move.l    $8(a5),d2
  2308.     fmove.s    $20(a5),fp2
  2309. L535
  2310. ;    top_cnt=top_end-top_start;
  2311.     sub.l    d2,d1
  2312.     move.l    d1,d6
  2313. ;    direction= (top_cnt>=0 ? 1: -1);
  2314.     bmi.b    L537
  2315. L536
  2316.     moveq    #1,d4
  2317.     bra.b    L538
  2318. L537
  2319.     moveq    #-1,d4
  2320. L538
  2321. ;    bottom_cnt=bottom_end-bottom_start;
  2322.     sub.l    $14(a5),d0
  2323.     move.l    d0,d7
  2324. ;    while(top_cnt)
  2325.     bra    L548
  2326. L539
  2327. ;        if(bottom_cnt)
  2328.     tst.l    d7
  2329.     beq.b    L541
  2330. L540
  2331. ;            tri_cnt=top_cnt/bottom_cnt;
  2332.     move.l    d6,d5
  2333.     divsl.l    d7,d5
  2334.     bra.b    L542
  2335. L541
  2336. ;            tri_cnt=abs(top_cnt);
  2337.     move.l    d6,-(a7)
  2338.     jsr    _abs
  2339.     addq.w    #4,a7
  2340.     move.l    d0,d5
  2341. L542
  2342. ;        glBegin(GL_TRIANGLE_FAN);
  2343.     pea    6.w
  2344.     jsr    _glBegin
  2345.     addq.w    #4,a7
  2346. ;        glEvalCoord2f((GLfloat)bottom_start/bottom_domain,
  2347.     fmove.l    $1C(a5),fp0
  2348.     fdiv.x    fp2,fp0
  2349.     fmove.s    fp0,-(a7)
  2350.     fmove.l    $14(a5),fp0
  2351.     fdiv.x    fp2,fp0
  2352.     fmove.s    fp0,-(a7)
  2353.     jsr    _glEvalCoord2f
  2354.     addq.w    #$8,a7
  2355. ;        for(k=0;
  2356.     moveq    #0,d3
  2357.     bra.b    L544
  2358. L543
  2359. ;            glEvalPoint2(top_start,top_z);
  2360.     move.l    $10(a5),-(a7)
  2361.     move.l    d2,-(a7)
  2362.     jsr    _glEvalPoint2
  2363.     addq.w    #$8,a7
  2364.     addq.l    #1,d3
  2365.     add.l    d4,d2
  2366. L544
  2367.     cmp.l    d5,d3
  2368.     ble.b    L543
  2369. L545
  2370. ;        if(bottom_cnt)
  2371.     tst.l    d7
  2372.     beq.b    L547
  2373. L546
  2374. ;            bottom_start+=direction;
  2375.     add.l    d4,$14(a5)
  2376. ;            top_start-=direction;
  2377.     sub.l    d4,d2
  2378. ;            glEvalCoord2f((GLfloat)bottom_start/bottom_domain,
  2379.     fmove.l    $1C(a5),fp0
  2380.     fdiv.x    fp2,fp0
  2381.     fmove.s    fp0,-(a7)
  2382.     fmove.l    $14(a5),fp0
  2383.     fdiv.x    fp2,fp0
  2384.     fmove.s    fp0,-(a7)
  2385.     jsr    _glEvalCoord2f
  2386.     addq.w    #$8,a7
  2387. L547
  2388. ;        glEnd();
  2389.     jsr    _glEnd
  2390. ;        top_cnt-=direction*tri_cnt;
  2391.     move.l    d4,d0
  2392.     muls.l    d5,d0
  2393.     move.l    d6,d1
  2394.     sub.l    d0,d1
  2395.     move.l    d1,d6
  2396. ;        bottom_cnt-=direction;
  2397.     move.l    d7,d0
  2398.     sub.l    d4,d0
  2399.     move.l    d0,d7
  2400. L548
  2401.     tst.l    d6
  2402.     bne    L539
  2403. L549
  2404.     fmovem.x (a7)+,fp2
  2405.     movem.l    (a7)+,d2-d7
  2406.     unlk    a5
  2407.     rts
  2408.  
  2409.     SECTION "_tesselate_strip_s_line:0",CODE
  2410.  
  2411.  
  2412. ;void
  2413.     XDEF    _tesselate_strip_s_line
  2414. _tesselate_strip_s_line
  2415. L566    EQU    -$1C
  2416.     link    a5,#L566
  2417.     movem.l    d2-d7,-(a7)
  2418.     fmovem.x fp2,-(a7)
  2419.     movem.l    $18(a5),d0/d6
  2420.     move.l    $C(a5),d1
  2421.     move.l    $8(a5),d2
  2422.     move.l    $14(a5),d4
  2423.     fmove.s    $20(a5),fp2
  2424. L551
  2425. ;    top_cnt=top_end-top_start;
  2426.     sub.l    d2,d1
  2427.     move.l    d1,-4(a5)
  2428. ;    direction= (top_cnt>=0 ? 1: -1);
  2429.     tst.l    -4(a5)
  2430.     bmi.b    L553
  2431. L552
  2432.     moveq    #1,d5
  2433.     bra.b    L554
  2434. L553
  2435.     moveq    #-1,d5
  2436. L554
  2437. ;    bottom_cnt=bottom_end-bottom_start;
  2438.     sub.l    d4,d0
  2439.     move.l    d0,-$8(a5)
  2440. ;    glBegin(GL_LINES);
  2441.     pea    1.w
  2442.     jsr    _glBegin
  2443.     addq.w    #4,a7
  2444. ;    while(top_cnt)
  2445.     bra    L564
  2446. L555
  2447. ;        if(bottom_cnt)
  2448.     tst.l    -$8(a5)
  2449.     beq.b    L557
  2450. L556
  2451. ;            tri_cnt=top_cnt/bottom_cnt;
  2452.     move.l    -4(a5),d0
  2453.     divsl.l    -$8(a5),d0
  2454.     move.l    d0,d7
  2455.     bra.b    L558
  2456. L557
  2457. ;            tri_cnt=abs(top_cnt);
  2458.     move.l    -4(a5),-(a7)
  2459.     jsr    _abs
  2460.     addq.w    #4,a7
  2461.     move.l    d0,d7
  2462. L558
  2463. ;        for(k=0;
  2464.     moveq    #0,d3
  2465.     bra.b    L560
  2466. L559
  2467. ;            glEvalCoord2f((GLfloat)bottom_start/bottom_domain,
  2468.     fmove.l    d6,fp0
  2469.     fdiv.x    fp2,fp0
  2470.     fmove.s    fp0,-(a7)
  2471.     fmove.l    d4,fp0
  2472.     fdiv.x    fp2,fp0
  2473.     fmove.s    fp0,-(a7)
  2474.     jsr    _glEvalCoord2f
  2475.     addq.w    #$8,a7
  2476. ;            glEvalPoint2(top_start,top_z);
  2477.     move.l    $10(a5),-(a7)
  2478.     move.l    d2,-(a7)
  2479.     jsr    _glEvalPoint2
  2480.     addq.w    #$8,a7
  2481.     addq.l    #1,d3
  2482.     add.l    d5,d2
  2483. L560
  2484.     cmp.l    d7,d3
  2485.     ble.b    L559
  2486. L561
  2487. ;        if(bottom_cnt)
  2488.     tst.l    -$8(a5)
  2489.     beq.b    L563
  2490. L562
  2491. ;tesselate_top_right_c
  2492.     fmove.l    d6,fp0
  2493.     fdiv.x    fp2,fp0
  2494.     fmove.s    fp0,-(a7)
  2495.     fmove.l    d4,fp0
  2496.     fdiv.x    fp2,fp0
  2497.     fmove.s    fp0,-(a7)
  2498.     jsr    _glEvalCoord2f
  2499.     addq.w    #$8,a7
  2500. ;            bottom_start+=direction;
  2501.     add.l    d5,d4
  2502. ;            top_start-=direction;
  2503.     sub.l    d5,d2
  2504. ;            glEvalCoord2f((GLfloat)bottom_start/bottom_domain,
  2505.     fmove.l    d6,fp0
  2506.     fdiv.x    fp2,fp0
  2507.     fmove.s    fp0,-(a7)
  2508.     fmove.l    d4,fp0
  2509.     fdiv.x    fp2,fp0
  2510.     fmove.s    fp0,-(a7)
  2511.     jsr    _glEvalCoord2f
  2512.     addq.w    #$8,a7
  2513. ;            glEvalPoint2(top_start,top_z);
  2514.     move.l    $10(a5),-(a7)
  2515.     move.l    d2,-(a7)
  2516.     jsr    _glEvalPoint2
  2517.     addq.w    #$8,a7
  2518. ;            glEvalCoord2f((GLfloat)bottom_start/bottom_domain,
  2519.     fmove.l    d6,fp0
  2520.     fdiv.x    fp2,fp0
  2521.     fmove.s    fp0,-(a7)
  2522.     fmove.l    d4,fp0
  2523.     fdiv.x    fp2,fp0
  2524.     fmove.s    fp0,-(a7)
  2525.     jsr    _glEvalCoord2f
  2526.     addq.w    #$8,a7
  2527. L563
  2528. ;        top_cnt-=direction*tri_cnt;
  2529.     move.l    d5,d0
  2530.     muls.l    d7,d0
  2531.     sub.l    d0,-4(a5)
  2532. ;        bottom_cnt-=direction;
  2533.     sub.l    d5,-$8(a5)
  2534. L564
  2535.     tst.l    -4(a5)
  2536.     bne    L555
  2537. L565
  2538. ;    glEnd();
  2539.     jsr    _glEnd
  2540.     fmovem.x (a7)+,fp2
  2541.     movem.l    (a7)+,d2-d7
  2542.     unlk    a5
  2543.     rts
  2544.  
  2545.     SECTION "_tesselate_strip_s:0",CODE
  2546.  
  2547.  
  2548. ;void
  2549.     XDEF    _tesselate_strip_s
  2550. _tesselate_strip_s
  2551.     movem.l    d2-d6,-(a7)
  2552.     movem.l    $1C(a7),d0-d5
  2553.     move.l    $18(a7),d6
  2554.     fmove.s    $34(a7),fp0
  2555. L567
  2556. ;    if(display_mode==GL_FILL)
  2557.     cmp.l    #$1B02,d6
  2558.     bne.b    L569
  2559. L568
  2560. ;        tesselate_strip_s_fill(top_start,top_end,top_z,bottom_start,
  2561.     fmove.s    fp0,-(a7)
  2562.     move.l    d5,-(a7)
  2563.     move.l    d4,-(a7)
  2564.     move.l    d3,-(a7)
  2565.     move.l    d2,-(a7)
  2566.     move.l    d1,-(a7)
  2567.     move.l    d0,-(a7)
  2568.     jsr    _tesselate_strip_s_fill
  2569.     add.w    #$1C,a7
  2570.     bra.b    L570
  2571. L569
  2572. ;        tesselate_strip_s_line(top_start,top_end,top_z,bottom_start,
  2573.     fmove.s    fp0,-(a7)
  2574.     move.l    d5,-(a7)
  2575.     move.l    d4,-(a7)
  2576.     move.l    d3,-(a7)
  2577.     move.l    d2,-(a7)
  2578.     move.l    d1,-(a7)
  2579.     move.l    d0,-(a7)
  2580.     jsr    _tesselate_strip_s_line
  2581.     add.w    #$1C,a7
  2582. L570
  2583.     movem.l    (a7)+,d2-d6
  2584.     rts
  2585.  
  2586.     SECTION "_tesselate_bottom_left_corner:0",CODE
  2587.  
  2588.  
  2589. ;void
  2590.     XDEF    _tesselate_bottom_left_corner
  2591. _tesselate_bottom_left_corner
  2592.     fmovem.x fp2/fp3,-(a7)
  2593.     move.l    $1C(a7),d0
  2594.     fmove.s    $24(a7),fp2
  2595.     fmove.s    $20(a7),fp3
  2596. L571
  2597. ;    if(display_mode==GL_FILL)
  2598.     cmp.l    #$1B02,d0
  2599.     bne.b    L573
  2600. L572
  2601. ;        glBegin(GL_TRIANGLE_FAN);
  2602.     pea    6.w
  2603.     jsr    _glBegin
  2604.     addq.w    #4,a7
  2605. ;        glEvalPoint2(1,1);
  2606.     pea    1.w
  2607.     pea    1.w
  2608.     jsr    _glEvalPoint2
  2609.     addq.w    #$8,a7
  2610. ;        glEvalCoord2f(s_1,0.0);
  2611.     clr.l    -(a7)
  2612.     fmove.s    fp3,-(a7)
  2613.     jsr    _glEvalCoord2f
  2614.     addq.w    #$8,a7
  2615. ;        glEvalCoord2f(0.0,0.0);
  2616.     clr.l    -(a7)
  2617.     clr.l    -(a7)
  2618.     jsr    _glEvalCoord2f
  2619.     addq.w    #$8,a7
  2620. ;        glEvalCoord2f(0.0,t_1);
  2621.     fmove.s    fp2,-(a7)
  2622.     clr.l    -(a7)
  2623.     jsr    _glEvalCoord2f
  2624.     addq.w    #$8,a7
  2625.     bra.b    L574
  2626. L573
  2627. ;        glBegin(GL_LINES);
  2628.     pea    1.w
  2629.     jsr    _glBegin
  2630.     addq.w    #4,a7
  2631. ;        glEvalCoord2f(0.0,0.0);
  2632.     clr.l    -(a7)
  2633.     clr.l    -(a7)
  2634.     jsr    _glEvalCoord2f
  2635.     addq.w    #$8,a7
  2636. ;        glEvalCoord2f(0.0,t_1);
  2637.     fmove.s    fp2,-(a7)
  2638.     clr.l    -(a7)
  2639.     jsr    _glEvalCoord2f
  2640.     addq.w    #$8,a7
  2641. ;        glEvalCoord2f(0.0,0.0);
  2642.     clr.l    -(a7)
  2643.     clr.l    -(a7)
  2644.     jsr    _glEvalCoord2f
  2645.     addq.w    #$8,a7
  2646. ;        glEvalPoint2(1,1);
  2647.     pea    1.w
  2648.     pea    1.w
  2649.     jsr    _glEvalPoint2
  2650.     addq.w    #$8,a7
  2651. ;        glEvalCoord2f(0.0,0.0);
  2652.     clr.l    -(a7)
  2653.     clr.l    -(a7)
  2654.     jsr    _glEvalCoord2f
  2655.     addq.w    #$8,a7
  2656. ;        glEvalCoord2f(s_1,0.0);
  2657.     clr.l    -(a7)
  2658.     fmove.s    fp3,-(a7)
  2659.     jsr    _glEvalCoord2f
  2660.     addq.w    #$8,a7
  2661. L574
  2662. ;    glEnd();
  2663.     jsr    _glEnd
  2664.     fmovem.x (a7)+,fp2/fp3
  2665.     rts
  2666.  
  2667.     SECTION "_tesselate_bottom_right_corner:0",CODE
  2668.  
  2669.  
  2670. ;void
  2671.     XDEF    _tesselate_bottom_right_corner
  2672. _tesselate_bottom_right_corner
  2673.     movem.l    d2/d3,-(a7)
  2674.     fmovem.x fp2/fp3,-(a7)
  2675.     movem.l    $24(a7),d0/d3
  2676.     move.l    $2C(a7),d2
  2677.     fmove.s    $34(a7),fp2
  2678.     fmove.s    $30(a7),fp3
  2679. L575
  2680. ;    if(display_mode==GL_FILL)
  2681.     cmp.l    #$1B02,d0
  2682.     bne.b    L577
  2683. L576
  2684. ;        glBegin(GL_TRIANGLE_FAN);
  2685.     pea    6.w
  2686.     jsr    _glBegin
  2687.     addq.w    #4,a7
  2688. ;        glEvalPoint2(1,v_top);
  2689.     move.l    d3,-(a7)
  2690.     pea    1.w
  2691.     jsr    _glEvalPoint2
  2692.     addq.w    #$8,a7
  2693. ;        glEvalCoord2f(0.0,v_bottom*t_1);
  2694.     fmove.l    d2,fp0
  2695.     fmul.x    fp2,fp0
  2696.     fmove.s    fp0,-(a7)
  2697.     clr.l    -(a7)
  2698.     jsr    _glEvalCoord2f
  2699.     addq.w    #$8,a7
  2700. ;        glEvalCoord2f(0.0,(v_bottom+1)*t_1);
  2701.     move.l    d2,d0
  2702.     addq.l    #1,d0
  2703.     fmove.l    d0,fp0
  2704.     fmul.x    fp2,fp0
  2705.     fmove.s    fp0,-(a7)
  2706.     clr.l    -(a7)
  2707.     jsr    _glEvalCoord2f
  2708.     addq.w    #$8,a7
  2709. ;        glEvalCoord2f(s_1,(v_bottom+1)*t_1);
  2710.     addq.l    #1,d2
  2711.     fmove.l    d2,fp0
  2712.     fmul.x    fp2,fp0
  2713.     fmove.s    fp0,-(a7)
  2714.     fmove.s    fp3,-(a7)
  2715.     jsr    _glEvalCoord2f
  2716.     addq.w    #$8,a7
  2717.     bra    L578
  2718. L577
  2719. ;        glBegin(GL_LINES);
  2720.     pea    1.w
  2721.     jsr    _glBegin
  2722.     addq.w    #4,a7
  2723. ;        glEvalCoord2f(0.0,(v_bottom+1)*t_1);
  2724.     move.l    d2,d0
  2725.     addq.l    #1,d0
  2726.     fmove.l    d0,fp0
  2727.     fmul.x    fp2,fp0
  2728.     fmove.s    fp0,-(a7)
  2729.     clr.l    -(a7)
  2730.     jsr    _glEvalCoord2f
  2731.     addq.w    #$8,a7
  2732. ;        glEvalPoint2(1,v_top);
  2733.     move.l    d3,-(a7)
  2734.     pea    1.w
  2735.     jsr    _glEvalPoint2
  2736.     addq.w    #$8,a7
  2737. ;        glEvalCoord2f(0.0,(v_bottom+1)*t_1);
  2738.     move.l    d2,d0
  2739.     addq.l    #1,d0
  2740.     fmove.l    d0,fp0
  2741.     fmul.x    fp2,fp0
  2742.     fmove.s    fp0,-(a7)
  2743.     clr.l    -(a7)
  2744.     jsr    _glEvalCoord2f
  2745.     addq.w    #$8,a7
  2746. ;        glEvalCoord2f(0.0,v_bottom*t_1);
  2747.     fmove.l    d2,fp0
  2748.     fmul.x    fp2,fp0
  2749.     fmove.s    fp0,-(a7)
  2750.     clr.l    -(a7)
  2751.     jsr    _glEvalCoord2f
  2752.     addq.w    #$8,a7
  2753. ;        glEvalCoord2f(0.0,(v_bottom+1)*t_1);
  2754.     move.l    d2,d0
  2755.     addq.l    #1,d0
  2756.     fmove.l    d0,fp0
  2757.     fmul.x    fp2,fp0
  2758.     fmove.s    fp0,-(a7)
  2759.     clr.l    -(a7)
  2760.     jsr    _glEvalCoord2f
  2761.     addq.w    #$8,a7
  2762. ;        glEvalCoord2f(s_1,(v_bottom+1)*t_1);
  2763.     addq.l    #1,d2
  2764.     fmove.l    d2,fp0
  2765.     fmul.x    fp2,fp0
  2766.     fmove.s    fp0,-(a7)
  2767.     fmove.s    fp3,-(a7)
  2768.     jsr    _glEvalCoord2f
  2769.     addq.w    #$8,a7
  2770. L578
  2771. ;    glEnd();
  2772.     jsr    _glEnd
  2773.     fmovem.x (a7)+,fp2/fp3
  2774.     movem.l    (a7)+,d2/d3
  2775.     rts
  2776.  
  2777.     SECTION "_tesselate_top_left_corner:0",CODE
  2778.  
  2779.  
  2780. ;void
  2781.     XDEF    _tesselate_top_left_corner
  2782. _tesselate_top_left_corner
  2783.     movem.l    d2/d3,-(a7)
  2784.     fmovem.x fp2/fp3,-(a7)
  2785.     movem.l    $24(a7),d0/d3
  2786.     move.l    $2C(a7),d2
  2787.     fmove.s    $30(a7),fp2
  2788.     fmove.s    $34(a7),fp3
  2789. L579
  2790. ;    if(display_mode==GL_FILL)
  2791.     cmp.l    #$1B02,d0
  2792.     bne.b    L581
  2793. L580
  2794. ;        glBegin(GL_TRIANGLE_FAN);
  2795.     pea    6.w
  2796.     jsr    _glBegin
  2797.     addq.w    #4,a7
  2798. ;        glEvalPoint2(u_right,1);
  2799.     pea    1.w
  2800.     move.l    d3,-(a7)
  2801.     jsr    _glEvalPoint2
  2802.     addq.w    #$8,a7
  2803. ;        glEvalCoord2f((u_left+1)*s_1,t_1);
  2804.     fmove.s    fp3,-(a7)
  2805.     move.l    d2,d0
  2806.     addq.l    #1,d0
  2807.     fmove.l    d0,fp0
  2808.     fmul.x    fp2,fp0
  2809.     fmove.s    fp0,-(a7)
  2810.     jsr    _glEvalCoord2f
  2811.     addq.w    #$8,a7
  2812. ;        glEvalCoord2f((u_left+1)*s_1,0.0);
  2813.     clr.l    -(a7)
  2814.     move.l    d2,d0
  2815.     addq.l    #1,d0
  2816.     fmove.l    d0,fp0
  2817.     fmul.x    fp2,fp0
  2818.     fmove.s    fp0,-(a7)
  2819.     jsr    _glEvalCoord2f
  2820.     addq.w    #$8,a7
  2821. ;        glEvalCoord2f(u_left*s_1,0.0);
  2822.     clr.l    -(a7)
  2823.     fmove.l    d2,fp0
  2824.     fmul.x    fp2,fp0
  2825.     fmove.s    fp0,-(a7)
  2826.     jsr    _glEvalCoord2f
  2827.     addq.w    #$8,a7
  2828.     bra    L582
  2829. L581
  2830. ;        glBegin(GL_LINES);
  2831.     pea    1.w
  2832.     jsr    _glBegin
  2833.     addq.w    #4,a7
  2834. ;        glEvalCoord2f((u_left+1)*s_1,0.0);
  2835.     clr.l    -(a7)
  2836.     move.l    d2,d0
  2837.     addq.l    #1,d0
  2838.     fmove.l    d0,fp0
  2839.     fmul.x    fp2,fp0
  2840.     fmove.s    fp0,-(a7)
  2841.     jsr    _glEvalCoord2f
  2842.     addq.w    #$8,a7
  2843. ;        glEvalPoint2(u_right,1);
  2844.     pea    1.w
  2845.     move.l    d3,-(a7)
  2846.     jsr    _glEvalPoint2
  2847.     addq.w    #$8,a7
  2848. ;        glEvalCoord2f((u_left+1)*s_1,0.0);
  2849.     clr.l    -(a7)
  2850.     move.l    d2,d0
  2851.     addq.l    #1,d0
  2852.     fmove.l    d0,fp0
  2853.     fmul.x    fp2,fp0
  2854.     fmove.s    fp0,-(a7)
  2855.     jsr    _glEvalCoord2f
  2856.     addq.w    #$8,a7
  2857. ;        glEvalCoord2f(u_left*s_1,0.0);
  2858.     clr.l    -(a7)
  2859.     fmove.l    d2,fp0
  2860.     fmul.x    fp2,fp0
  2861.     fmove.s    fp0,-(a7)
  2862.     jsr    _glEvalCoord2f
  2863.     addq.w    #$8,a7
  2864. ;        glEvalCoord2f((u_left+1)*s_1,0.0);
  2865.     clr.l    -(a7)
  2866.     move.l    d2,d0
  2867.     addq.l    #1,d0
  2868.     fmove.l    d0,fp0
  2869.     fmul.x    fp2,fp0
  2870.     fmove.s    fp0,-(a7)
  2871.     jsr    _glEvalCoord2f
  2872.     addq.w    #$8,a7
  2873. ;        glEvalCoord2f((u_left+1)*s_1,t_1);
  2874.     fmove.s    fp3,-(a7)
  2875.     addq.l    #1,d2
  2876.     fmove.l    d2,fp0
  2877.     fmul.x    fp2,fp0
  2878.     fmove.s    fp0,-(a7)
  2879.     jsr    _glEvalCoord2f
  2880.     addq.w    #$8,a7
  2881. L582
  2882. ;    glEnd();
  2883.     jsr    _glEnd
  2884.     fmovem.x (a7)+,fp2/fp3
  2885.     movem.l    (a7)+,d2/d3
  2886.     rts
  2887.  
  2888.     SECTION "_tesselate_top_right_corner:0",CODE
  2889.  
  2890.  
  2891. ;            tesselate_strip_s(display_mode,left,1,top-1,right,
  2892.     XDEF    _tesselate_top_right_corner
  2893. _tesselate_top_right_corner
  2894.     movem.l    d2-d5,-(a7)
  2895.     fmovem.x fp2/fp3,-(a7)
  2896.     movem.l    $2C(a7),d0/d4/d5
  2897.     movem.l    $38(a7),d2/d3
  2898.     fmove.s    $40(a7),fp2
  2899.     fmove.s    $44(a7),fp3
  2900. L583
  2901. ;    if(display_mode==GL_FILL)
  2902.     cmp.l    #$1B02,d0
  2903.     bne    L585
  2904. L584
  2905. ;        glBegin(GL_TRIANGLE_FAN);
  2906.     pea    6.w
  2907.     jsr    _glBegin
  2908.     addq.w    #4,a7
  2909. ;        glEvalPoint2(u_left,v_bottom);
  2910.     move.l    d5,-(a7)
  2911.     move.l    d4,-(a7)
  2912.     jsr    _glEvalPoint2
  2913.     addq.w    #$8,a7
  2914. ;        glEvalCoord2f((u_right-1)*s_1,v_top*t_1);
  2915.     fmove.l    d3,fp0
  2916.     fmul.x    fp3,fp0
  2917.     fmove.s    fp0,-(a7)
  2918.     move.l    d2,d0
  2919.     subq.l    #1,d0
  2920.     fmove.l    d0,fp0
  2921.     fmul.x    fp2,fp0
  2922.     fmove.s    fp0,-(a7)
  2923.     jsr    _glEvalCoord2f
  2924.     addq.w    #$8,a7
  2925. ;        glEvalCoord2f(u_right*s_1,v_top*t_1);
  2926.     fmove.l    d3,fp0
  2927.     fmul.x    fp3,fp0
  2928.     fmove.s    fp0,-(a7)
  2929.     fmove.l    d2,fp0
  2930.     fmul.x    fp2,fp0
  2931.     fmove.s    fp0,-(a7)
  2932.     jsr    _glEvalCoord2f
  2933.     addq.w    #$8,a7
  2934. ;        glEvalCoord2f(u_right*s_1,(v_top-1)*t_1);
  2935.     subq.l    #1,d3
  2936.     fmove.l    d3,fp0
  2937.     fmul.x    fp3,fp0
  2938.     fmove.s    fp0,-(a7)
  2939.     fmove.l    d2,fp0
  2940.     fmul.x    fp2,fp0
  2941.     fmove.s    fp0,-(a7)
  2942.     jsr    _glEvalCoord2f
  2943.     addq.w    #$8,a7
  2944.     bra    L586
  2945. L585
  2946. ;        glBegin(GL_LINES);
  2947.     pea    1.w
  2948.     jsr    _glBegin
  2949.     addq.w    #4,a7
  2950. ;        glEvalCoord2f(u_right*s_1,v_top*t_1);
  2951.     fmove.l    d3,fp0
  2952.     fmul.x    fp3,fp0
  2953.     fmove.s    fp0,-(a7)
  2954.     fmove.l    d2,fp0
  2955.     fmul.x    fp2,fp0
  2956.     fmove.s    fp0,-(a7)
  2957.     jsr    _glEvalCoord2f
  2958.     addq.w    #$8,a7
  2959. ;        glEvalPoint2(u_left,v_bottom);
  2960.     move.l    d5,-(a7)
  2961.     move.l    d4,-(a7)
  2962.     jsr    _glEvalPoint2
  2963.     addq.w    #$8,a7
  2964. ;        glEvalCoord2f(u_right*s_1,v_top*t_1);
  2965.     fmove.l    d3,fp0
  2966.     fmul.x    fp3,fp0
  2967.     fmove.s    fp0,-(a7)
  2968.     fmove.l    d2,fp0
  2969.     fmul.x    fp2,fp0
  2970.     fmove.s    fp0,-(a7)
  2971.     jsr    _glEvalCoord2f
  2972.     addq.w    #$8,a7
  2973. ;        glEvalCoord2f(u_right*s_1,(v_top-1)*t_1);
  2974.     move.l    d3,d0
  2975.     subq.l    #1,d0
  2976.     fmove.l    d0,fp0
  2977.     fmul.x    fp3,fp0
  2978.     fmove.s    fp0,-(a7)
  2979.     fmove.l    d2,fp0
  2980.     fmul.x    fp2,fp0
  2981.     fmove.s    fp0,-(a7)
  2982.     jsr    _glEvalCoord2f
  2983.     addq.w    #$8,a7
  2984. ;        glEvalCoord2f(u_right*s_1,v_top*t_1);
  2985.     fmove.l    d3,fp0
  2986.     fmul.x    fp3,fp0
  2987.     fmove.s    fp0,-(a7)
  2988.     fmove.l    d2,fp0
  2989.     fmul.x    fp2,fp0
  2990.     fmove.s    fp0,-(a7)
  2991.     jsr    _glEvalCoord2f
  2992.     addq.w    #$8,a7
  2993. ;        glEvalCoord2f((u_right-1)*s_1,v_top*t_1);
  2994.     fmove.l    d3,fp0
  2995.     fmul.x    fp3,fp0
  2996.     fmove.s    fp0,-(a7)
  2997.     subq.l    #1,d2
  2998.     fmove.l    d2,fp0
  2999.     fmul.x    fp2,fp0
  3000.     fmove.s    fp0,-(a7)
  3001.     jsr    _glEvalCoord2f
  3002.     addq.w    #$8,a7
  3003. L586
  3004. ;    glEnd();
  3005.     jsr    _glEnd
  3006.     fmovem.x (a7)+,fp2/fp3
  3007.     movem.l    (a7)+,d2-d5
  3008.     rts
  3009.  
  3010.     SECTION "_nurbs_map_bezier:0",CODE
  3011.  
  3012.  
  3013. ;static void
  3014. _nurbs_map_bezier
  3015.     movem.l    d2-d6/a2,-(a7)
  3016.     movem.l    $30(a7),d0/d1
  3017.     move.l    $2C(a7),d2
  3018.     move.l    $28(a7),d3
  3019.     move.l    $1C(a7),d6
  3020.     move.l    $20(a7),a0
  3021.     move.l    $24(a7),a1
  3022. L587
  3023. ;    if(s==0)
  3024.     tst.l    d0
  3025.     bne.b    L589
  3026. L588
  3027. ;        top=*(tfactors+t*3);
  3028.     move.l    d1,d3
  3029.     muls.l    #3,d3
  3030.     move.l    0(a1,d3.l*4),d3
  3031. ;        bottom=*(tfactors+t*3+1);
  3032.     move.l    d1,d4
  3033.     muls.l    #3,d4
  3034.     lea    0(a1,d4.l*4),a1
  3035.     move.l    4(a1),d5
  3036.     bra.b    L592
  3037. L589
  3038. ;    if(s==s_bezier_cnt-1)
  3039.     subq.l    #1,d3
  3040.     cmp.l    d3,d0
  3041.     bne.b    L591
  3042. L590
  3043. ;        top=*(tfactors+t*3+2);
  3044.     move.l    d1,d3
  3045.     muls.l    #3,d3
  3046.     lea    0(a1,d3.l*4),a2
  3047.     move.l    $8(a2),d3
  3048. ;        bottom=*(tfactors+t*3);
  3049.     move.l    d1,d4
  3050.     muls.l    #3,d4
  3051.     move.l    0(a1,d4.l*4),d5
  3052.     bra.b    L592
  3053. L591
  3054. ;        top=bottom=*(tfactors+t*3);
  3055.     move.l    d1,d3
  3056.     muls.l    #3,d3
  3057.     move.l    0(a1,d3.l*4),d5
  3058.     move.l    d5,d3
  3059. L592
  3060. ;    if(t==0)
  3061.     tst.l    d1
  3062.     bne.b    L594
  3063. L593
  3064. ;        left=*(sfactors+s*3+1);
  3065.     move.l    d0,d1
  3066.     muls.l    #3,d1
  3067.     lea    0(a0,d1.l*4),a1
  3068.     move.l    4(a1),d4
  3069. ;        right=*(sfactors+s*3);
  3070.     muls.l    #3,d0
  3071.     move.l    0(a0,d0.l*4),d2
  3072.     bra.b    L597
  3073. L594
  3074. ;    if(t==t_bezier_cnt-1)
  3075.     subq.l    #1,d2
  3076.     cmp.l    d2,d1
  3077.     bne.b    L596
  3078. L595
  3079. ;        left=*(sfactors+s*3);
  3080.     move.l    d0,d1
  3081.     muls.l    #3,d1
  3082.     move.l    0(a0,d1.l*4),d4
  3083. ;        right=*(sfactors+s*3+2);
  3084.     muls.l    #3,d0
  3085.     lea    0(a0,d0.l*4),a0
  3086.     move.l    $8(a0),d2
  3087.     bra.b    L597
  3088. L596
  3089. ;        left=right=*(sfactors+s*3);
  3090.     muls.l    #3,d0
  3091.     move.l    0(a0,d0.l*4),d2
  3092.     move.l    d2,d4
  3093. L597
  3094. ;    if(top>bottom)
  3095.     cmp.l    d5,d3
  3096.     ble    L604
  3097. L598
  3098. ;        if(left<right)
  3099.     cmp.l    d2,d4
  3100.     bge    L600
  3101. L599
  3102. ;            glMapGrid2f(right, 0.0, 1.0, top, 0.0, 1.0);
  3103.     move.l    #$3F800000,-(a7)
  3104.     clr.l    -(a7)
  3105.     move.l    d3,-(a7)
  3106.     move.l    #$3F800000,-(a7)
  3107.     clr.l    -(a7)
  3108.     move.l    d2,-(a7)
  3109.     jsr    _glMapGrid2f
  3110.     add.w    #$18,a7
  3111. ;            glEvalMesh2(display_mode,1,right, 1, top);
  3112.     move.l    d3,-(a7)
  3113.     pea    1.w
  3114.     move.l    d2,-(a7)
  3115.     pea    1.w
  3116.     move.l    d6,-(a7)
  3117.     jsr    _glEvalMesh2
  3118.     add.w    #$14,a7
  3119. ;            tesselate_strip_s(display_mode,1,right,1,1,left,0,(GLfloat)lef
  3120.     fmove.l    d4,fp0
  3121.     fmove.s    fp0,-(a7)
  3122.     clr.l    -(a7)
  3123.     move.l    d4,-(a7)
  3124.     pea    1.w
  3125.     pea    1.w
  3126.     move.l    d2,-(a7)
  3127.     pea    1.w
  3128.     move.l    d6,-(a7)
  3129.     jsr    _tesselate_strip_s
  3130.     add.w    #$20,a7
  3131. ;            tesselate_bottom_left_corner(display_mode,(GLfloat)(1.0/left),
  3132.     fmove.l    d5,fp0
  3133.     fmove.d    #$.3FF00000.00000000,fp1
  3134.     fdiv.x    fp0,fp1
  3135.     fmove.x    fp1,fp0
  3136.     fmove.s    fp0,-(a7)
  3137.     fmove.l    d4,fp0
  3138.     fmove.d    #$.3FF00000.00000000,fp1
  3139.     fdiv.x    fp0,fp1
  3140.     fmove.x    fp1,fp0
  3141.     fmove.s    fp0,-(a7)
  3142.     move.l    d6,-(a7)
  3143.     jsr    _tesselate_bottom_left_corner
  3144.     add.w    #$C,a7
  3145. ;            tesselate_strip_t(display_mode,top,1,1,bottom,1,0,(GLfloat)bot
  3146.     fmove.l    d5,fp0
  3147.     fmove.l    fp0,d0
  3148.     move.l    d0,-(a7)
  3149.     clr.l    -(a7)
  3150.     pea    1.w
  3151.     move.l    d5,-(a7)
  3152.     pea    1.w
  3153.     pea    1.w
  3154.     move.l    d3,-(a7)
  3155.     move.l    d6,-(a7)
  3156.     jsr    _tesselate_strip_t
  3157.     add.w    #$20,a7
  3158.     bra    L603
  3159. L600
  3160. ;        if(left==right)
  3161.     cmp.l    d2,d4
  3162.     bne.b    L602
  3163. L601
  3164. ;            glMapGrid2f(right, 0.0, 1.0, top, 0.0, 1.0);
  3165.     move.l    #$3F800000,-(a7)
  3166.     clr.l    -(a7)
  3167.     move.l    d3,-(a7)
  3168.     move.l    #$3F800000,-(a7)
  3169.     clr.l    -(a7)
  3170.     move.l    d2,-(a7)
  3171.     jsr    _glMapGrid2f
  3172.     add.w    #$18,a7
  3173. ;            glEvalMesh2(display_mode,1,right, 0, top);
  3174.     move.l    d3,-(a7)
  3175.     clr.l    -(a7)
  3176.     move.l    d2,-(a7)
  3177.     pea    1.w
  3178.     move.l    d6,-(a7)
  3179.     jsr    _glEvalMesh2
  3180.     add.w    #$14,a7
  3181. ;            tesselate_strip_t(display_mode,top,0,1,bottom,0,0,(GLfloat)bot
  3182.     fmove.l    d5,fp0
  3183.     fmove.l    fp0,d0
  3184.     move.l    d0,-(a7)
  3185.     clr.l    -(a7)
  3186.     clr.l    -(a7)
  3187.     move.l    d5,-(a7)
  3188.     pea    1.w
  3189.     clr.l    -(a7)
  3190.     move.l    d3,-(a7)
  3191.     move.l    d6,-(a7)
  3192.     jsr    _tesselate_strip_t
  3193.     add.w    #$20,a7
  3194.     bra    L603
  3195. L602
  3196. ;            glMapGrid2f(left, 0.0, 1.0, top, 0.0, 1.0);
  3197.     move.l    #$3F800000,-(a7)
  3198.     clr.l    -(a7)
  3199.     move.l    d3,-(a7)
  3200.     move.l    #$3F800000,-(a7)
  3201.     clr.l    -(a7)
  3202.     move.l    d4,-(a7)
  3203.     jsr    _glMapGrid2f
  3204.     add.w    #$18,a7
  3205. ;            glEvalMesh2(display_mode,1,left, 0, top-1);
  3206.     move.l    d3,d0
  3207.     subq.l    #1,d0
  3208.     move.l    d0,-(a7)
  3209.     clr.l    -(a7)
  3210.     move.l    d4,-(a7)
  3211.     pea    1.w
  3212.     move.l    d6,-(a7)
  3213.     jsr    _glEvalMesh2
  3214.     add.w    #$14,a7
  3215. ;            tesselate_strip_t(display_mode,top-1,0,1,bottom-1,0,0,
  3216.     fmove.l    d5,fp0
  3217.     fmove.l    fp0,d0
  3218.     move.l    d0,-(a7)
  3219.     clr.l    -(a7)
  3220.     clr.l    -(a7)
  3221.     move.l    d5,d0
  3222.     subq.l    #1,d0
  3223.     move.l    d0,-(a7)
  3224.     pea    1.w
  3225.     clr.l    -(a7)
  3226.     move.l    d3,d0
  3227.     subq.l    #1,d0
  3228.     move.l    d0,-(a7)
  3229.     move.l    d6,-(a7)
  3230.     jsr    _tesselate_strip_t
  3231.     add.w    #$20,a7
  3232. ;            tesselate_bottom_right_corner(display_mode,top-1,bottom-1,
  3233.     fmove.l    d5,fp0
  3234.     fmove.d    #$.3FF00000.00000000,fp1
  3235.     fdiv.x    fp0,fp1
  3236.     fmove.x    fp1,fp0
  3237.     fmove.s    fp0,-(a7)
  3238.     fmove.l    d2,fp0
  3239.     fmove.d    #$.3FF00000.00000000,fp1
  3240.     fdiv.x    fp0,fp1
  3241.     fmove.x    fp1,fp0
  3242.     fmove.s    fp0,-(a7)
  3243.     subq.l    #1,d5
  3244.     move.l    d5,-(a7)
  3245.     move.l    d3,d0
  3246.     subq.l    #1,d0
  3247.     move.l    d0,-(a7)
  3248.     move.l    d6,-(a7)
  3249.     jsr    _tesselate_bottom_right_corner
  3250.     add.w    #$14,a7
  3251. ;            tesselate_strip_s(display_mode,left,1,top-1,right,1,right,
  3252.     fmove.l    d2,fp0
  3253.     fmove.s    fp0,-(a7)
  3254.     move.l    d2,-(a7)
  3255.     pea    1.w
  3256.     move.l    d2,-(a7)
  3257.     subq.l    #1,d3
  3258.     move.l    d3,-(a7)
  3259.     pea    1.w
  3260.     move.l    d4,-(a7)
  3261.     move.l    d6,-(a7)
  3262.     jsr    _tesselate_strip_s
  3263.     add.w    #$20,a7
  3264. L603
  3265.     bra    L616
  3266. L604
  3267. ;    if(top==bottom)
  3268.     cmp.l    d5,d3
  3269.     bne    L611
  3270. L605
  3271. ;        if(left<right)
  3272.     cmp.l    d2,d4
  3273.     bge.b    L607
  3274. L606
  3275. ;            glMapGrid2f(right, 0.0, 1.0, top, 0.0, 1.0);
  3276.     move.l    #$3F800000,-(a7)
  3277.     clr.l    -(a7)
  3278.     move.l    d3,-(a7)
  3279.     move.l    #$3F800000,-(a7)
  3280.     clr.l    -(a7)
  3281.     move.l    d2,-(a7)
  3282.     jsr    _glMapGrid2f
  3283.     add.w    #$18,a7
  3284. ;            glEvalMesh2(display_mode,0,right, 1, top);
  3285.     move.l    d3,-(a7)
  3286.     pea    1.w
  3287.     move.l    d2,-(a7)
  3288.     clr.l    -(a7)
  3289.     move.l    d6,-(a7)
  3290.     jsr    _glEvalMesh2
  3291.     add.w    #$14,a7
  3292. ;            tesselate_strip_s(display_mode,0,right,1,0,left,0,(GLfloat)lef
  3293.     fmove.l    d4,fp0
  3294.     fmove.s    fp0,-(a7)
  3295.     clr.l    -(a7)
  3296.     move.l    d4,-(a7)
  3297.     clr.l    -(a7)
  3298.     pea    1.w
  3299.     move.l    d2,-(a7)
  3300.     clr.l    -(a7)
  3301.     move.l    d6,-(a7)
  3302.     jsr    _tesselate_strip_s
  3303.     add.w    #$20,a7
  3304.     bra    L610
  3305. L607
  3306. ;        if(left==right)
  3307.     cmp.l    d2,d4
  3308.     bne.b    L609
  3309. L608
  3310. ;            glMapGrid2f(right, 0.0, 1.0, top, 0.0, 1.0);
  3311.     move.l    #$3F800000,-(a7)
  3312.     clr.l    -(a7)
  3313.     move.l    d3,-(a7)
  3314.     move.l    #$3F800000,-(a7)
  3315.     clr.l    -(a7)
  3316.     move.l    d2,-(a7)
  3317.     jsr    _glMapGrid2f
  3318.     add.w    #$18,a7
  3319. ;            glEvalMesh2(display_mode,0,right, 0, top);
  3320.     move.l    d3,-(a7)
  3321.     clr.l    -(a7)
  3322.     move.l    d2,-(a7)
  3323.     clr.l    -(a7)
  3324.     move.l    d6,-(a7)
  3325.     jsr    _glEvalMesh2
  3326.     add.w    #$14,a7
  3327.     bra.b    L610
  3328. L609
  3329. ;            glMapGrid2f(left, 0.0, 1.0, top, 0.0, 1.0);
  3330.     move.l    #$3F800000,-(a7)
  3331.     clr.l    -(a7)
  3332.     move.l    d3,-(a7)
  3333.     move.l    #$3F800000,-(a7)
  3334.     clr.l    -(a7)
  3335.     move.l    d4,-(a7)
  3336.     jsr    _glMapGrid2f
  3337.     add.w    #$18,a7
  3338. ;            glEvalMesh2(display_mode,0,left, 0, top-1);
  3339.     move.l    d3,d0
  3340.     subq.l    #1,d0
  3341.     move.l    d0,-(a7)
  3342.     clr.l    -(a7)
  3343.     move.l    d4,-(a7)
  3344.     clr.l    -(a7)
  3345.     move.l    d6,-(a7)
  3346.     jsr    _glEvalMesh2
  3347.     add.w    #$14,a7
  3348. ;            tesselate_strip_s(display_mode,left,0,top-1,right,0,right,
  3349.     fmove.l    d2,fp0
  3350.     fmove.s    fp0,-(a7)
  3351.     move.l    d2,-(a7)
  3352.     clr.l    -(a7)
  3353.     move.l    d2,-(a7)
  3354.     subq.l    #1,d3
  3355.     move.l    d3,-(a7)
  3356.     clr.l    -(a7)
  3357.     move.l    d4,-(a7)
  3358.     move.l    d6,-(a7)
  3359.     jsr    _tesselate_strip_s
  3360.     add.w    #$20,a7
  3361. L610
  3362.     bra    L616
  3363. L611
  3364. ;        if(left<right)
  3365.     cmp.l    d2,d4
  3366.     bge    L613
  3367. L612
  3368. ;            glMapGrid2f(right, 0.0, 1.0, bottom, 0.0, 1.0);
  3369.     move.l    #$3F800000,-(a7)
  3370.     clr.l    -(a7)
  3371.     move.l    d5,-(a7)
  3372.     move.l    #$3F800000,-(a7)
  3373.     clr.l    -(a7)
  3374.     move.l    d2,-(a7)
  3375.     jsr    _glMapGrid2f
  3376.     add.w    #$18,a7
  3377. ;            glEvalMesh2(display_mode,0,right-1, 1, bottom);
  3378.     move.l    d5,-(a7)
  3379.     pea    1.w
  3380.     move.l    d2,d0
  3381.     subq.l    #1,d0
  3382.     move.l    d0,-(a7)
  3383.     clr.l    -(a7)
  3384.     move.l    d6,-(a7)
  3385.     jsr    _glEvalMesh2
  3386.     add.w    #$14,a7
  3387. ;            tesselate_strip_s(display_mode,0,right-1,1,0,left-1,0,
  3388.     fmove.l    d4,fp0
  3389.     fmove.s    fp0,-(a7)
  3390.     clr.l    -(a7)
  3391.     move.l    d4,d0
  3392.     subq.l    #1,d0
  3393.     move.l    d0,-(a7)
  3394.     clr.l    -(a7)
  3395.     pea    1.w
  3396.     move.l    d2,d0
  3397.     subq.l    #1,d0
  3398.     move.l    d0,-(a7)
  3399.     clr.l    -(a7)
  3400.     move.l    d6,-(a7)
  3401.     jsr    _tesselate_strip_s
  3402.     add.w    #$20,a7
  3403. ;            tesselate_top_left_corner(display_mode,right-1,left-1,
  3404.     fmove.l    d3,fp0
  3405.     fmove.d    #$.3FF00000.00000000,fp1
  3406.     fdiv.x    fp0,fp1
  3407.     fmove.x    fp1,fp0
  3408.     fmove.s    fp0,-(a7)
  3409.     fmove.l    d4,fp0
  3410.     fmove.d    #$.3FF00000.00000000,fp1
  3411.     fdiv.x    fp0,fp1
  3412.     fmove.x    fp1,fp0
  3413.     fmove.s    fp0,-(a7)
  3414.     subq.l    #1,d4
  3415.     move.l    d4,-(a7)
  3416.     move.l    d2,d0
  3417.     subq.l    #1,d0
  3418.     move.l    d0,-(a7)
  3419.     move.l    d6,-(a7)
  3420.     jsr    _tesselate_top_left_corner
  3421.     add.w    #$14,a7
  3422. ;            tesselate_strip_t(display_mode,1,bottom,right-1,1,top,top,
  3423.     fmove.l    d3,fp0
  3424.     fmove.l    fp0,d0
  3425.     move.l    d0,-(a7)
  3426.     move.l    d3,-(a7)
  3427.     move.l    d3,-(a7)
  3428.     pea    1.w
  3429.     subq.l    #1,d2
  3430.     move.l    d2,-(a7)
  3431.     move.l    d5,-(a7)
  3432.     pea    1.w
  3433.     move.l    d6,-(a7)
  3434.     jsr    _tesselate_strip_t
  3435.     add.w    #$20,a7
  3436.     bra    L616
  3437. L613
  3438. ;        if(left==right)
  3439.     cmp.l    d2,d4
  3440.     bne.b    L615
  3441. L614
  3442. ;            glMapGrid2f(right, 0.0, 1.0, bottom, 0.0, 1.0);
  3443.     move.l    #$3F800000,-(a7)
  3444.     clr.l    -(a7)
  3445.     move.l    d5,-(a7)
  3446.     move.l    #$3F800000,-(a7)
  3447.     clr.l    -(a7)
  3448.     move.l    d2,-(a7)
  3449.     jsr    _glMapGrid2f
  3450.     add.w    #$18,a7
  3451. ;            glEvalMesh2(display_mode,0,right-1, 0, bottom);
  3452.     move.l    d5,-(a7)
  3453.     clr.l    -(a7)
  3454.     move.l    d2,d0
  3455.     subq.l    #1,d0
  3456.     move.l    d0,-(a7)
  3457.     clr.l    -(a7)
  3458.     move.l    d6,-(a7)
  3459.     jsr    _glEvalMesh2
  3460.     add.w    #$14,a7
  3461. ;            tesselate_strip_t(display_mode,0,bottom,right-1,0,top,top,
  3462.     fmove.l    d3,fp0
  3463.     fmove.l    fp0,d0
  3464.     move.l    d0,-(a7)
  3465.     move.l    d3,-(a7)
  3466.     move.l    d3,-(a7)
  3467.     clr.l    -(a7)
  3468.     subq.l    #1,d2
  3469.     move.l    d2,-(a7)
  3470.     move.l    d5,-(a7)
  3471.     clr.l    -(a7)
  3472.     move.l    d6,-(a7)
  3473.     jsr    _tesselate_strip_t
  3474.     add.w    #$20,a7
  3475.     bra    L616
  3476. L615
  3477. ;            glMapGrid2f(left, 0.0, 1.0, bottom, 0.0, 1.0);
  3478.     move.l    #$3F800000,-(a7)
  3479.     clr.l    -(a7)
  3480.     move.l    d5,-(a7)
  3481.     move.l    #$3F800000,-(a7)
  3482.     clr.l    -(a7)
  3483.     move.l    d4,-(a7)
  3484.     jsr    _glMapGrid2f
  3485.     add.w    #$18,a7
  3486. ;            glEvalMesh2(display_mode,0,left-1, 0, bottom-1);
  3487.     move.l    d5,d0
  3488.     subq.l    #1,d0
  3489.     move.l    d0,-(a7)
  3490.     clr.l    -(a7)
  3491.     move.l    d4,d0
  3492.     subq.l    #1,d0
  3493.     move.l    d0,-(a7)
  3494.     clr.l    -(a7)
  3495.     move.l    d6,-(a7)
  3496.     jsr    _glEvalMesh2
  3497.     add.w    #$14,a7
  3498. ;            tesselate_strip_t(display_mode,0,bottom-1,left-1,0,top-1,top,
  3499.     fmove.l    d3,fp0
  3500.     fmove.l    fp0,d0
  3501.     move.l    d0,-(a7)
  3502.     move.l    d3,-(a7)
  3503.     move.l    d3,d0
  3504.     subq.l    #1,d0
  3505.     move.l    d0,-(a7)
  3506.     clr.l    -(a7)
  3507.     move.l    d4,d0
  3508.     subq.l    #1,d0
  3509.     move.l    d0,-(a7)
  3510.     move.l    d5,d0
  3511.     subq.l    #1,d0
  3512.     move.l    d0,-(a7)
  3513.     clr.l    -(a7)
  3514.     move.l    d6,-(a7)
  3515.     jsr    _tesselate_strip_t
  3516.     add.w    #$20,a7
  3517. ;            tesselate_top_right_corner(display_mode,left-1,bottom-1,right,
  3518.     fmove.l    d3,fp0
  3519.     fmove.d    #$.3FF00000.00000000,fp1
  3520.     fdiv.x    fp0,fp1
  3521.     fmove.x    fp1,fp0
  3522.     fmove.s    fp0,-(a7)
  3523.     fmove.l    d2,fp0
  3524.     fmove.d    #$.3FF00000.00000000,fp1
  3525.     fdiv.x    fp0,fp1
  3526.     fmove.x    fp1,fp0
  3527.     fmove.s    fp0,-(a7)
  3528.     move.l    d3,-(a7)
  3529.     move.l    d2,-(a7)
  3530.     move.l    d5,d0
  3531.     subq.l    #1,d0
  3532.     move.l    d0,-(a7)
  3533.     move.l    d4,d0
  3534.     subq.l    #1,d0
  3535.     move.l    d0,-(a7)
  3536.     move.l    d6,-(a7)
  3537.     jsr    _tesselate_top_right_corner
  3538.     add.w    #$1C,a7
  3539. ;            tesselate_strip_s(display_mode,left-1,0,bottom-1,right-1,0,rig
  3540.     fmove.l    d2,fp0
  3541.     fmove.s    fp0,-(a7)
  3542.     move.l    d2,-(a7)
  3543.     clr.l    -(a7)
  3544.     subq.l    #1,d2
  3545.     move.l    d2,-(a7)
  3546.     subq.l    #1,d5
  3547.     move.l    d5,-(a7)
  3548.     clr.l    -(a7)
  3549.     subq.l    #1,d4
  3550.     move.l    d4,-(a7)
  3551.     move.l    d6,-(a7)
  3552.     jsr    _tesselate_strip_s
  3553.     add.w    #$20,a7
  3554. L616
  3555.     movem.l    (a7)+,d2-d6/a2
  3556.     rts
  3557.  
  3558.     SECTION "_draw_polygon_mode:0",CODE
  3559.  
  3560.  
  3561. ;static void
  3562. _draw_polygon_mode
  3563. L642    EQU    -$18
  3564.     link    a5,#L642
  3565.     movem.l    d2-d7/a2-a4,-(a7)
  3566.     movem.l    $C(a5),a2-a4
  3567. L617
  3568. ;    t_bezier_cnt=new_ctrl->t_bezier_cnt;
  3569.     move.l    a3,a0
  3570.     move.l    $64(a0),d4
  3571. ;    s_bezier_cnt=new_ctrl->s_bezier_cnt;
  3572.     move.l    a3,a0
  3573.     move.l    $60(a0),d6
  3574. ;    glEnable(nobj->surface.geom.type);
  3575.     move.l    $E0(a2),-(a7)
  3576.     jsr    _glEnable
  3577.     addq.w    #4,a7
  3578. ;    if(new_ctrl->color_ctrl)
  3579.     move.l    a3,a1
  3580.     tst.l    $18(a1)
  3581.     beq.b    L619
  3582. L618
  3583. ;        glEnable(nobj->surface.color.type);
  3584.     move.l    $10C(a2),-(a7)
  3585.     jsr    _glEnable
  3586.     addq.w    #4,a7
  3587. ;        do_color=GL_TRUE;
  3588.     move.b    #1,-$D(a5)
  3589.     bra.b    L620
  3590. L619
  3591. ;        do_color=GL_FALSE;
  3592.     clr.b    -$D(a5)
  3593. L620
  3594. ;    if(new_ctrl->normal_ctrl)
  3595.     move.l    a3,a1
  3596.     tst.l    $30(a1)
  3597.     beq.b    L622
  3598. L621
  3599. ;        glEnable(nobj->surface.normal.type);
  3600.     move.l    $164(a2),-(a7)
  3601.     jsr    _glEnable
  3602.     addq.w    #4,a7
  3603. ;        do_normal=GL_TRUE;
  3604.     move.b    #1,-$E(a5)
  3605.     bra.b    L623
  3606. L622
  3607. ;        do_normal=GL_FALSE;
  3608.     clr.b    -$E(a5)
  3609. L623
  3610. ;    if(new_ctrl->texture_ctrl)
  3611.     move.l    a3,a1
  3612.     tst.l    $48(a1)
  3613.     beq.b    L625
  3614. L624
  3615. ;        glEnable(nobj->surface.texture.type);
  3616.     move.l    $138(a2),-(a7)
  3617.     jsr    _glEnable
  3618.     addq.w    #4,a7
  3619. ;        do_texture=GL_TRUE;
  3620.     moveq    #1,d7
  3621.     bra.b    L626
  3622. L625
  3623. ;        do_texture=GL_FALSE;
  3624.     moveq    #0,d7
  3625. L626
  3626. ;    for(j=0;
  3627.     moveq    #0,d5
  3628.     bra    L640
  3629. L627
  3630. ;        for(i=0;
  3631.     moveq    #0,d3
  3632.     bra    L638
  3633. L628
  3634. ;            offset=j*t_bezier_cnt + i;
  3635.     move.l    d5,d2
  3636.     muls.l    d4,d2
  3637.     add.l    d3,d2
  3638. ;            if(fine_culling_test_3D(nobj,*(new_ctrl->geom_offsets + offset)
  3639.     move.l    $DC(a2),-(a7)
  3640.     move.l    a3,a0
  3641.     move.l    $8(a0),-(a7)
  3642.     move.l    a3,a0
  3643.     move.l    4(a0),-(a7)
  3644.     move.l    $D8(a2),-(a7)
  3645.     move.l    $D4(a2),-(a7)
  3646.     move.l    a3,a1
  3647.     move.l    $C(a1),a0
  3648.     move.l    0(a0,d2.l*4),-(a7)
  3649.     move.l    a2,-(a7)
  3650.     jsr    _fine_culling_test_3D
  3651.     add.w    #$1C,a7
  3652.     tst.b    d0
  3653.     beq.b    L630
  3654. L629
  3655. ;                
  3656.     bra    L637
  3657. L630
  3658. ;            glMap2f(nobj->surface.geom.type,0.0,1.0,new_ctrl->geom_s_strid
  3659.     move.l    a3,a1
  3660.     move.l    $C(a1),a0
  3661.     move.l    0(a0,d2.l*4),-(a7)
  3662.     move.l    $D8(a2),-(a7)
  3663.     move.l    a3,a0
  3664.     move.l    $8(a0),-(a7)
  3665.     move.l    #$3F800000,-(a7)
  3666.     clr.l    -(a7)
  3667.     move.l    $D4(a2),-(a7)
  3668.     move.l    a3,a0
  3669.     move.l    4(a0),-(a7)
  3670.     move.l    #$3F800000,-(a7)
  3671.     clr.l    -(a7)
  3672.     move.l    $E0(a2),-(a7)
  3673.     jsr    _glMap2f
  3674.     add.w    #$28,a7
  3675. ;            if(do_color)
  3676.     tst.b    -$D(a5)
  3677.     beq.b    L632
  3678. L631
  3679. ;                glMap2f(nobj->surface.color.type,0.0,1.0,
  3680.     move.l    a3,a1
  3681.     move.l    $24(a1),a0
  3682.     move.l    0(a0,d2.l*4),-(a7)
  3683.     move.l    $104(a2),-(a7)
  3684.     move.l    a3,a0
  3685.     move.l    $20(a0),-(a7)
  3686.     move.l    #$3F800000,-(a7)
  3687.     clr.l    -(a7)
  3688.     move.l    $100(a2),-(a7)
  3689.     move.l    a3,a0
  3690.     move.l    $1C(a0),-(a7)
  3691.     move.l    #$3F800000,-(a7)
  3692.     clr.l    -(a7)
  3693.     move.l    $10C(a2),-(a7)
  3694.     jsr    _glMap2f
  3695.     add.w    #$28,a7
  3696. L632
  3697. ;            if(do_normal)
  3698.     tst.b    -$E(a5)
  3699.     beq.b    L634
  3700. L633
  3701. ;                glMap2f(nobj->surface.normal.type,0.0,1.0,
  3702.     move.l    a3,a1
  3703.     move.l    $3C(a1),a0
  3704.     move.l    0(a0,d2.l*4),-(a7)
  3705.     move.l    $15C(a2),-(a7)
  3706.     move.l    a3,a0
  3707.     move.l    $38(a0),-(a7)
  3708.     move.l    #$3F800000,-(a7)
  3709.     clr.l    -(a7)
  3710.     move.l    $158(a2),-(a7)
  3711.     move.l    a3,a0
  3712.     move.l    $34(a0),-(a7)
  3713.     move.l    #$3F800000,-(a7)
  3714.     clr.l    -(a7)
  3715.     move.l    $164(a2),-(a7)
  3716.     jsr    _glMap2f
  3717.     add.w    #$28,a7
  3718. L634
  3719. ;            if(do_texture)
  3720.     tst.b    d7
  3721.     beq.b    L636
  3722. L635
  3723. ;                glMap2f(nobj->surface.texture.type,0.0,1.0,
  3724.     move.l    a3,a1
  3725.     move.l    $54(a1),a0
  3726.     move.l    0(a0,d2.l*4),-(a7)
  3727.     move.l    $130(a2),-(a7)
  3728.     move.l    a3,a0
  3729.     move.l    $50(a0),-(a7)
  3730.     move.l    #$3F800000,-(a7)
  3731.     clr.l    -(a7)
  3732.     move.l    $12C(a2),-(a7)
  3733.     move.l    a3,a0
  3734.     move.l    $4C(a0),-(a7)
  3735.     move.l    #$3F800000,-(a7)
  3736.     clr.l    -(a7)
  3737.     move.l    $138(a2),-(a7)
  3738.     jsr    _glMap2f
  3739.     add.w    #$28,a7
  3740. L636
  3741. ;            nurbs_map_bezier(display_mode,sfactors,tfactors,s_bezier_cnt,
  3742.     move.l    d3,-(a7)
  3743.     move.l    d5,-(a7)
  3744.     move.l    d4,-(a7)
  3745.     move.l    d6,-(a7)
  3746.     move.l    $18(a5),-(a7)
  3747.     move.l    a4,-(a7)
  3748.     move.l    $8(a5),-(a7)
  3749.     jsr    _nurbs_map_bezier
  3750.     add.w    #$1C,a7
  3751. L637
  3752.     addq.l    #1,d3
  3753. L638
  3754.     cmp.l    d4,d3
  3755.     blt    L628
  3756. L639
  3757.     addq.l    #1,d5
  3758. L640
  3759.     cmp.l    d6,d5
  3760.     blt    L627
  3761. L641
  3762.     movem.l    (a7)+,d2-d7/a2-a4
  3763.     unlk    a5
  3764.     rts
  3765.  
  3766.     SECTION "_init_new_ctrl:0",CODE
  3767.  
  3768.  
  3769. ;void
  3770.     XDEF    _init_new_ctrl
  3771. _init_new_ctrl
  3772.     move.l    4(a7),a0
  3773. L643
  3774. ;    p->geom_ctrl=p->color_ctrl=p->normal_ctrl=p->texture_ctrl=NULL;
  3775.     clr.l    $48(a0)
  3776.     clr.l    $30(a0)
  3777.     clr.l    $18(a0)
  3778.     clr.l    (a0)
  3779. ;    p->geom_offsets=p->color_offsets=p->normal_offsets=p->texture_offs
  3780.     clr.l    $54(a0)
  3781.     clr.l    $3C(a0)
  3782.     clr.l    $24(a0)
  3783.     clr.l    $C(a0)
  3784. ;    p->s_bezier_cnt=p->t_bezier_cnt=0;
  3785.     clr.l    $64(a0)
  3786.     clr.l    $60(a0)
  3787.     rts
  3788.  
  3789.     SECTION "_augment_new_ctrl:0",CODE
  3790.  
  3791.  
  3792. ;GLenum
  3793.     XDEF    _augment_new_ctrl
  3794. _augment_new_ctrl
  3795.     movem.l    d2/d3/a2-a4,-(a7)
  3796.     move.l    $1C(a7),a2
  3797.     move.l    $18(a7),a4
  3798. L644
  3799. ;    p->s_bezier_cnt=(p->geom_s_pt_cnt)/(nobj->surface.geom.sorder);
  3800.     move.l    $10(a2),d0
  3801.     divsl.l    $D4(a4),d0
  3802.     move.l    d0,$60(a2)
  3803. ;    p->t_bezier_cnt=(p->geom_t_pt_cnt)/(nobj->surface.geom.torder);
  3804.     move.l    $14(a2),d0
  3805.     divsl.l    $D8(a4),d0
  3806.     move.l    d0,$64(a2)
  3807. ;    offset_size=(p->s_bezier_cnt)*(p->t_bezier_cnt);
  3808.     move.l    $60(a2),d2
  3809.     muls.l    $64(a2),d2
  3810. ;    p->geom_t_stride=nobj->surface.geom.dim;
  3811.     move.l    $DC(a4),$8(a2)
  3812. ;    p->geom_s_stride=(p->geom_t_pt_cnt)*(nobj->surface.geom.dim);
  3813.     move.l    $14(a2),d0
  3814.     muls.l    $DC(a4),d0
  3815.     move.l    d0,4(a2)
  3816. ;    p->color_t_stride=nobj->surface.color.dim;
  3817.     move.l    $108(a4),$20(a2)
  3818. ;    p->color_s_stride=(p->color_t_pt_cnt)*(nobj->surface.color.dim);
  3819.     move.l    $2C(a2),d0
  3820.     muls.l    $108(a4),d0
  3821.     move.l    d0,$1C(a2)
  3822. ;    p->normal_t_stride=nobj->surface.normal.dim;
  3823.     move.l    $160(a4),$38(a2)
  3824. ;    p->normal_s_stride=(p->normal_t_pt_cnt)*(nobj->surface.normal.dim);
  3825.     move.l    $44(a2),d0
  3826.     muls.l    $160(a4),d0
  3827.     move.l    d0,$34(a2)
  3828. ;    p->texture_t_stride=nobj->surface.texture.dim;
  3829.     move.l    $134(a4),$50(a2)
  3830. ;    p->texture_s_stride=(p->texture_t_pt_cnt)*(nobj->surface.texture.d
  3831.     move.l    $5C(a2),d0
  3832.     muls.l    $134(a4),d0
  3833.     move.l    d0,$4C(a2)
  3834. ;    if((p->geom_offsets=(GLfloat **)malloc(sizeof(GLfloat *)*offset_si
  3835.     move.l    d2,d0
  3836.     moveq    #2,d1
  3837.     asl.l    d1,d0
  3838.     move.l    d0,-(a7)
  3839.     jsr    _malloc
  3840.     addq.w    #4,a7
  3841.     move.l    d0,$C(a2)
  3842.     move.l    d0,a0
  3843.     cmp.w    #0,a0
  3844.     bne.b    L646
  3845. L645
  3846. ;        call_user_error(nobj,GLU_OUT_OF_MEMORY);
  3847.     move.l    #$18A26,-(a7)
  3848.     move.l    a4,-(a7)
  3849.     jsr    _call_user_error
  3850.     addq.w    #$8,a7
  3851.     move.l    #$18707,d0
  3852.     movem.l    (a7)+,d2/d3/a2-a4
  3853.     rts
  3854. L646
  3855. ;            if(glu_do_sampling_uv(nobj,&new_ctrl,&sfactors,&tfactors)
  3856.     tst.l    $18(a2)
  3857.     beq.b    L649
  3858. L647
  3859. ;        if((p->color_offsets=(GLfloat **)malloc(sizeof(GLfloat *)*offset
  3860.     move.l    d2,d0
  3861.     moveq    #2,d1
  3862.     asl.l    d1,d0
  3863.     move.l    d0,-(a7)
  3864.     jsr    _malloc
  3865.     addq.w    #4,a7
  3866.     move.l    d0,$24(a2)
  3867.     move.l    d0,a0
  3868.     cmp.w    #0,a0
  3869.     bne.b    L649
  3870. L648
  3871. ;            free_new_ctrl(p);
  3872.     move.l    a2,-(a7)
  3873.     jsr    _free_new_ctrl
  3874.     addq.w    #4,a7
  3875. ;            call_user_error(nobj,GLU_OUT_OF_MEMORY);
  3876.     move.l    #$18A26,-(a7)
  3877.     move.l    a4,-(a7)
  3878.     jsr    _call_user_error
  3879.     addq.w    #$8,a7
  3880.     move.l    #$18707,d0
  3881.     movem.l    (a7)+,d2/d3/a2-a4
  3882.     rts
  3883. L649
  3884. ;    if(p->normal_ctrl)
  3885.     tst.l    $30(a2)
  3886.     beq.b    L652
  3887. L650
  3888. ;        if((p->normal_offsets=(GLfloat **)malloc(sizeof(GLfloat *)*offse
  3889.     move.l    d2,d0
  3890.     moveq    #2,d1
  3891.     asl.l    d1,d0
  3892.     move.l    d0,-(a7)
  3893.     jsr    _malloc
  3894.     addq.w    #4,a7
  3895.     move.l    d0,$3C(a2)
  3896.     move.l    d0,a0
  3897.     cmp.w    #0,a0
  3898.     bne.b    L652
  3899. L651
  3900. ;            free_new_ctrl(p);
  3901.     move.l    a2,-(a7)
  3902.     jsr    _free_new_ctrl
  3903.     addq.w    #4,a7
  3904. ;            call_user_error(nobj,GLU_OUT_OF_MEMORY);
  3905.     move.l    #$18A26,-(a7)
  3906.     move.l    a4,-(a7)
  3907.     jsr    _call_user_error
  3908.     addq.w    #$8,a7
  3909.     move.l    #$18707,d0
  3910.     movem.l    (a7)+,d2/d3/a2-a4
  3911.     rts
  3912. L652
  3913. ;    if(p->texture_ctrl)
  3914.     tst.l    $48(a2)
  3915.     beq.b    L655
  3916. L653
  3917. ;        if((p->texture_offsets=(GLfloat **)malloc(sizeof(GLfloat *)*offs
  3918.     move.l    d2,d0
  3919.     moveq    #2,d2
  3920.     asl.l    d2,d0
  3921.     move.l    d0,-(a7)
  3922.     jsr    _malloc
  3923.     addq.w    #4,a7
  3924.     move.l    d0,$54(a2)
  3925.     move.l    d0,a0
  3926.     cmp.w    #0,a0
  3927.     bne.b    L655
  3928. L654
  3929. ;            free_new_ctrl(p);
  3930.     move.l    a2,-(a7)
  3931.     jsr    _free_new_ctrl
  3932.     addq.w    #4,a7
  3933. ;            call_user_error(nobj,GLU_OUT_OF_MEMORY);
  3934.     move.l    #$18A26,-(a7)
  3935.     move.l    a4,-(a7)
  3936.     jsr    _call_user_error
  3937.     addq.w    #$8,a7
  3938.     move.l    #$18707,d0
  3939.     movem.l    (a7)+,d2/d3/a2-a4
  3940.     rts
  3941. L655
  3942. ;    for(i=0;
  3943.     moveq    #0,d1
  3944.     bra.b    L660
  3945. L656
  3946. ;        for(j=0;
  3947.     moveq    #0,d0
  3948.     bra.b    L658
  3949. L657
  3950. ;            *(p->geom_offsets + i*(p->t_bezier_cnt) + j) =
  3951.     move.l    $D4(a4),d2
  3952.     muls.l    d1,d2
  3953.     muls.l    $DC(a4),d2
  3954.     muls.l    $14(a2),d2
  3955.     move.l    (a2),a1
  3956.     lea    0(a1,d2.l*4),a1
  3957.     move.l    $DC(a4),d2
  3958.     muls.l    d0,d2
  3959.     muls.l    $D8(a4),d2
  3960.     lea    0(a1,d2.l*4),a1
  3961.     move.l    $64(a2),d2
  3962.     muls.l    d1,d2
  3963.     move.l    $C(a2),a0
  3964.     lea    0(a0,d2.l*4),a0
  3965.     move.l    a1,0(a0,d0.l*4)
  3966.     addq.l    #1,d0
  3967. L658
  3968.     cmp.l    $64(a2),d0
  3969.     blt.b    L657
  3970. L659
  3971.     addq.l    #1,d1
  3972. L660
  3973.     cmp.l    $60(a2),d1
  3974.     blt.b    L656
  3975. L661
  3976. ;    if(p->color_ctrl)
  3977.     tst.l    $18(a2)
  3978.     beq.b    L668
  3979. L662
  3980. ;        for(i=0;
  3981.     moveq    #0,d1
  3982.     bra.b    L667
  3983. L663
  3984. ;            for(j=0;
  3985.     moveq    #0,d0
  3986.     bra.b    L665
  3987. L664
  3988. ;                *(p->color_offsets + i*(p->t_bezier_cnt) + j) =
  3989.     move.l    $100(a4),d2
  3990.     muls.l    d1,d2
  3991.     muls.l    $108(a4),d2
  3992.     muls.l    $2C(a2),d2
  3993.     move.l    $18(a2),a1
  3994.     lea    0(a1,d2.l*4),a1
  3995.     move.l    $108(a4),d2
  3996.     muls.l    d0,d2
  3997.     muls.l    $104(a4),d2
  3998.     lea    0(a1,d2.l*4),a1
  3999.     move.l    $64(a2),d2
  4000.     muls.l    d1,d2
  4001.     move.l    $24(a2),a0
  4002.     lea    0(a0,d2.l*4),a0
  4003.     move.l    a1,0(a0,d0.l*4)
  4004.     addq.l    #1,d0
  4005. L665
  4006.     cmp.l    $64(a2),d0
  4007.     blt.b    L664
  4008. L666
  4009.     addq.l    #1,d1
  4010. L667
  4011.     cmp.l    $60(a2),d1
  4012.     blt.b    L663
  4013. L668
  4014. ;    if(p->normal_ctrl)
  4015.     tst.l    $30(a2)
  4016.     beq.b    L675
  4017. L669
  4018. ;        for(i=0;
  4019.     moveq    #0,d1
  4020.     bra.b    L674
  4021. L670
  4022. ;            for(j=0;
  4023.     moveq    #0,d0
  4024.     bra.b    L672
  4025. L671
  4026. ;                *(p->normal_offsets + i*(p->t_bezier_cnt) + j) =
  4027.     move.l    $158(a4),d2
  4028.     muls.l    d1,d2
  4029.     muls.l    $160(a4),d2
  4030.     muls.l    $44(a2),d2
  4031.     move.l    $30(a2),a1
  4032.     lea    0(a1,d2.l*4),a1
  4033.     move.l    $160(a4),d2
  4034.     muls.l    d0,d2
  4035.     muls.l    $15C(a4),d2
  4036.     lea    0(a1,d2.l*4),a1
  4037.     move.l    $64(a2),d2
  4038.     muls.l    d1,d2
  4039.     move.l    $3C(a2),a0
  4040.     lea    0(a0,d2.l*4),a0
  4041.     move.l    a1,0(a0,d0.l*4)
  4042.     addq.l    #1,d0
  4043. L672
  4044.     cmp.l    $64(a2),d0
  4045.     blt.b    L671
  4046. L673
  4047.     addq.l    #1,d1
  4048. L674
  4049.     cmp.l    $60(a2),d1
  4050.     blt.b    L670
  4051. L675
  4052. ;    if(p->texture_ctrl)
  4053.     tst.l    $48(a2)
  4054.     beq.b    L682
  4055. L676
  4056. ;        for(i=0;
  4057.     moveq    #0,d1
  4058.     bra.b    L681
  4059. L677
  4060. ;            for(j=0;
  4061.     moveq    #0,d0
  4062.     bra.b    L679
  4063. L678
  4064. ;                *(p->texture_offsets + i*(p->t_bezier_cnt) + j) =
  4065.     move.l    $12C(a4),d2
  4066.     muls.l    d1,d2
  4067.     muls.l    $134(a4),d2
  4068.     muls.l    $5C(a2),d2
  4069.     move.l    $48(a2),a1
  4070.     lea    0(a1,d2.l*4),a1
  4071.     move.l    $134(a4),d2
  4072.     muls.l    d0,d2
  4073.     muls.l    $130(a4),d2
  4074.     lea    0(a1,d2.l*4),a1
  4075.     move.l    $64(a2),d2
  4076.     muls.l    d1,d2
  4077.     move.l    $54(a2),a0
  4078.     lea    0(a0,d2.l*4),a0
  4079.     move.l    a1,0(a0,d0.l*4)
  4080.     addq.l    #1,d0
  4081. L679
  4082.     cmp.l    $64(a2),d0
  4083.     blt.b    L678
  4084. L680
  4085.     addq.l    #1,d1
  4086. L681
  4087.     cmp.l    $60(a2),d1
  4088.     blt.b    L677
  4089. L682
  4090.     moveq    #0,d0
  4091.     movem.l    (a7)+,d2/d3/a2-a4
  4092.     rts
  4093.  
  4094.     SECTION "_do_nurbs_surface:0",CODE
  4095.  
  4096.  
  4097. ;void
  4098.     XDEF    _do_nurbs_surface
  4099. _do_nurbs_surface
  4100. L705    EQU    -$70
  4101.     link    a5,#L705
  4102.     move.l    a2,-(a7)
  4103.     move.l    $8(a5),a2
  4104. L683
  4105. ;    if(test_nurbs_surfaces(nobj)!=GLU_NO_ERROR)
  4106.     move.l    a2,-(a7)
  4107.     jsr    _test_nurbs_surfaces
  4108.     addq.w    #4,a7
  4109.     tst.l    d0
  4110.     beq.b    L685
  4111. L684
  4112.     move.l    (a7)+,a2
  4113.     unlk    a5
  4114.     rts
  4115. L685
  4116. ;    init_new_ctrl(&new_ctrl);
  4117.     pea    -$70(a5)
  4118.     jsr    _init_new_ctrl
  4119.     addq.w    #4,a7
  4120. ;    if(convert_surfs(nobj,&new_ctrl)!=GLU_NO_ERROR)
  4121.     pea    -$70(a5)
  4122.     move.l    a2,-(a7)
  4123.     jsr    _convert_surfs
  4124.     addq.w    #$8,a7
  4125.     tst.l    d0
  4126.     beq.b    L687
  4127. L686
  4128.     move.l    (a7)+,a2
  4129.     unlk    a5
  4130.     rts
  4131. L687
  4132. ;    if(augment_new_ctrl(nobj,&new_ctrl)!=GLU_NO_ERROR)
  4133.     pea    -$70(a5)
  4134.     move.l    a2,-(a7)
  4135.     jsr    _augment_new_ctrl
  4136.     addq.w    #$8,a7
  4137.     tst.l    d0
  4138.     beq.b    L689
  4139. L688
  4140.     move.l    (a7)+,a2
  4141.     unlk    a5
  4142.     rts
  4143. L689
  4144. ;    switch(nobj->sampling_method)
  4145.     move.l    $A4(a2),d0
  4146.     cmp.l    #$18778,d0
  4147.     beq    L696
  4148.     bgt.b    L706
  4149.     cmp.l    #$18777,d0
  4150.     beq.b    L690
  4151.     bra    L699
  4152. L706
  4153.     cmp.l    #$18779,d0
  4154.     beq.b    L693
  4155.     bra    L699
  4156. ;        
  4157. L690
  4158. ;            if(glu_do_sampling_3D(nobj,&new_ctrl,&sfactors,&tfactors)!=
  4159.     pea    -$8(a5)
  4160.     pea    -4(a5)
  4161.     pea    -$70(a5)
  4162.     move.l    a2,-(a7)
  4163.     jsr    _glu_do_sampling_3D
  4164.     add.w    #$10,a7
  4165.     tst.l    d0
  4166.     beq.b    L692
  4167. L691
  4168. ;                free_new_ctrl(&new_ctrl);
  4169.     pea    -$70(a5)
  4170.     jsr    _free_new_ctrl
  4171.     addq.w    #4,a7
  4172.     move.l    (a7)+,a2
  4173.     unlk    a5
  4174.     rts
  4175. L692
  4176. ;            
  4177.     bra.b    L700
  4178. L693
  4179. ;            if(glu_do_sampling_uv(nobj,&new_ctrl,&sfactors,&tfactors)!=
  4180.     pea    -$8(a5)
  4181.     pea    -4(a5)
  4182.     pea    -$70(a5)
  4183.     move.l    a2,-(a7)
  4184.     jsr    _glu_do_sampling_uv
  4185.     add.w    #$10,a7
  4186.     tst.l    d0
  4187.     beq.b    L695
  4188. L694
  4189. ;                free_new_ctrl(&new_ctrl);
  4190.     pea    -$70(a5)
  4191.     jsr    _free_new_ctrl
  4192.     addq.w    #4,a7
  4193.     move.l    (a7)+,a2
  4194.     unlk    a5
  4195.     rts
  4196. L695
  4197. ;            
  4198.     bra.b    L700
  4199. L696
  4200. ;            if(glu_do_sampling_param_3D(nobj,&new_ctrl,&sfactors,&tfactors)
  4201.     pea    -$8(a5)
  4202.     pea    -4(a5)
  4203.     pea    -$70(a5)
  4204.     move.l    a2,-(a7)
  4205.     jsr    _glu_do_sampling_param_3D
  4206.     add.w    #$10,a7
  4207.     tst.l    d0
  4208.     beq.b    L698
  4209. L697
  4210. ;                free_new_ctrl(&new_ctrl);
  4211.     pea    -$70(a5)
  4212.     jsr    _free_new_ctrl
  4213.     addq.w    #4,a7
  4214.     move.l    (a7)+,a2
  4215.     unlk    a5
  4216.     rts
  4217. L698
  4218. ;            
  4219.     bra.b    L700
  4220. L699
  4221. ;            abort();
  4222.     jsr    _abort
  4223. L700
  4224. ;    glFrontFace(GL_CW);
  4225.     pea    $900.w
  4226.     jsr    _glFrontFace
  4227.     addq.w    #4,a7
  4228. ;    switch(nobj->display_mode)
  4229.     move.l    $A(a2),d0
  4230.     cmp.l    #$18790,d0
  4231.     beq.b    L702
  4232.     bgt.b    L707
  4233.     cmp.l    #$186AC,d0
  4234.     beq.b    L701
  4235.     bra.b    L703
  4236. L707
  4237.     cmp.l    #$18791,d0
  4238.     beq.b    L702
  4239.     bra.b    L703
  4240. ;        
  4241. L701
  4242. ;                draw_polygon_mode(GL_FILL,nobj,&new_ctrl,sfactors,tfactors);
  4243.     move.l    -$8(a5),-(a7)
  4244.     move.l    -4(a5),-(a7)
  4245.     pea    -$70(a5)
  4246.     move.l    a2,-(a7)
  4247.     pea    $1B02.w
  4248.     jsr    _draw_polygon_mode
  4249.     add.w    #$14,a7
  4250. ;            
  4251.     bra.b    L704
  4252. L702
  4253. ;                draw_polygon_mode(GL_LINE,nobj,&new_ctrl,sfactors,tfactors);
  4254.     move.l    -$8(a5),-(a7)
  4255.     move.l    -4(a5),-(a7)
  4256.     pea    -$70(a5)
  4257.     move.l    a2,-(a7)
  4258.     pea    $1B01.w
  4259.     jsr    _draw_polygon_mode
  4260.     add.w    #$14,a7
  4261. ;            
  4262.     bra.b    L704
  4263. L703
  4264. ;            abort();
  4265.     jsr    _abort
  4266. L704
  4267. ;    free(sfactors);
  4268.     move.l    -4(a5),-(a7)
  4269.     jsr    _free
  4270.     addq.w    #4,a7
  4271. ;    free(tfactors);
  4272.     move.l    -$8(a5),-(a7)
  4273.     jsr    _free
  4274.     addq.w    #4,a7
  4275. ;    free_new_ctrl(&new_ctrl);
  4276.     pea    -$70(a5)
  4277.     jsr    _free_new_ctrl
  4278.     addq.w    #4,a7
  4279.     move.l    (a7)+,a2
  4280.     unlk    a5
  4281.     rts
  4282.  
  4283.     END
  4284.